コード例 #1
0
    def __init__(self):
        QWidget.__init__(self)

        #Carrega el Gui
        self.ui = uikademarcenter()
        self.ui.setupUi(self)
        self.usbtrayclosed=True


####
# SOUND CONFIGURATION
####
        self.play="paplay" #Play Program
        self.soundconnect="/usr/share/sounds/KDE_Dialog_Appear.wav" #Sound USB connect
        self.sounddisconnect="/usr/share/sounds/KDE_Dialog_Disappear.wav"

####
# END SOUND CONFIGURATION
####

        self.connect(self.ui.b_settings, SIGNAL("clicked()"), self.showsettings)

        global notifier

        #Load configuration files
        self.load_kademarcenter_config()

####  UsbTray Module  ####
        self.usbtray = UsbTray()
        self.connect(self.usbtray, SIGNAL("showmsg"), self.showmsg)
##########################

####  IvMan Work  ####
        self.HardwareDetect = HardwareDetect()
        self.connect(self.HardwareDetect, SIGNAL("showmsg"), self.showmsg)
        self.connect(self.HardwareDetect, SIGNAL("regeneraformusbtray"), self.regeneraformusbtray)
        self.connect(self.HardwareDetect, SIGNAL("showusbtray"), self.showusbtray)
        self.HardwareDetect.start()
######################

#############
####  TRAY MODULE & ACTIONS
#############
        #### TRAY ####
        self.tray = QSystemTrayIcon(self)
        self.trayMenu = QMenu()
        #Definicio de items del menu (solament el que son, icona i descripcio)
        #self.action_quit = QAction(QIcon("/usr/share/kademar/icons/convertir.png"), self.tr('Quit'), self)
        self.action_mainwindow = QAction(QIcon("/usr/share/kademar/icons/endavant.png"), self.tr("Open kademar Center"), self)
        self.action_settings = QAction(QIcon("/usr/share/kademar/icons/configure.png"), self.tr("Configure"), self)


        #Afegit opcions de dalt, en el menu del context
        self.trayMenu.addAction(self.action_mainwindow)
        self.trayMenu.addAction(self.action_settings)

        #self.trayMenu.addAction(self.action_quit)

        #Connectar Accions al fer click a un del menu, la function que executa
        self.connect(self.action_mainwindow, SIGNAL("triggered()"), self.mainwindow)
        self.connect(self.action_settings, SIGNAL("triggered()"), self.showsettings)

        #self.connect(self.action_quit, SIGNAL("triggered()"), self.quitusbtray)

        #Quan fas clic al tray executa eventsdeltray (function)
        self.tray.connect( self.tray, SIGNAL( "activated(QSystemTrayIcon::ActivationReason)" ), self.eventsdeltray )

        self.trayIcon = QIcon("/usr/share/kademar/utils/kademarcenter/img/kademar.png")
        self.tray.setContextMenu(self.trayMenu)
        self.tray.setIcon(self.trayIcon)
        self.tray.setToolTip("kademar Center")
        self.tray.show()
#############
####  END  TRAY MODULE & ACTIONS
#############

#### INITIAL Services Start  ####
        #Initial start of services
        system(scripts.initial_service_start)
#################################

#### INITIAL DEVICE MOUNT ####
        #Initial mount of already plugged devices
        for udi in getoutput(scripts.initial_mount).split():
            print udi
            print "INITIAL DEVICE"
            system("touch /tmp/kademarcenter-inicial")
            self.HardwareDetect.processa_udi(udi, "add")
            system("rm -f /tmp/kademarcenter-inicial")
##############################

#############
####  PC INFO
#############

#Get PC info & put on info labels
        kernel=funcions_k.versiokernel()
        versiokademar=funcions_k.versiokademar()
        tipuskademar=funcions_k.tipuskademar()

        cpu=getoutput(""" grep 'cpu MHz' /proc/cpuinfo | awk '{ print $4 }' """)
        cpuinfo=getoutput(" cat /proc/cpuinfo | grep 'model name' ")
        ram=getoutput("""  grep 'MemTotal' /proc/meminfo | awk '{ print $2 }' """)
        hostname=getoutput("hostname -f")
        logedusers=getoutput("users")
        numlogedusers=len(logedusers.split(" "))

        self.ui.l_kdm.setText("kademar")
        self.ui.l_kern.setText(kernel)
        self.ui.l_ver.setText(versiokademar)
        self.ui.l_tipu.setText(tipuskademar)
        self.ui.l_cpu.setText(cpu.split("\n")[0]+" Mhz")
        self.ui.l_cpuinfo.setText(cpuinfo)
        self.ui.l_ram.setText(ram+" Mb")
        self.ui.l_host.setText(hostname)

        self.kademarstart()
        
        #if live-cd check if executing 32bit kademar on 64bit Machine
        global kademarstartconfig
        if not funcions_k.instalat() and kademarstartconfig.arch_warning:
            if getoutput("arch") != "x86_64": #if system kernel ISN'T 64bit
                #check if machine can support 64 bit system
                check64bit=getoutput(""" for i in `grep cache_alignment /proc/cpuinfo | cut -d: -f2`; do echo $i; break; done """).strip()
                checkSse3=getoutput("""  grep -i sse3 /proc/cpuinfo 2>/dev/null """)
                checkSse4=getoutput("""  grep -i sse4 /proc/cpuinfo 2>/dev/null """)
                if checkSse3 or checkSse4:  #if have sse3 or 4
                    if int(check64bit) >= 64:
                    #warn if it's a machine 64bit capable with a 32bit system
                        QMessageBox.critical(self, self.tr('Executing 32bit kademar on a 64bit Machine'), self.tr("Your computer is a 64bit capable, but you are executing a 32bit kademar.\nThis can cause performance issues and kademar experience could be reduced.\n\nFor live-cd use there's no problem, but if you want to install kademar on this machine, would be better if you download 64bit version from www.kademar.org"))


#############
####  END PC INFO
#############

        #Comprueba dispositivos USB y muestralo si eso
        self.regeneraformusbtray()
コード例 #2
0
class kademarcenter(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        #Carrega el Gui
        self.ui = uikademarcenter()
        self.ui.setupUi(self)
        self.usbtrayclosed=True


####
# SOUND CONFIGURATION
####
        self.play="paplay" #Play Program
        self.soundconnect="/usr/share/sounds/KDE_Dialog_Appear.wav" #Sound USB connect
        self.sounddisconnect="/usr/share/sounds/KDE_Dialog_Disappear.wav"

####
# END SOUND CONFIGURATION
####

        self.connect(self.ui.b_settings, SIGNAL("clicked()"), self.showsettings)

        global notifier

        #Load configuration files
        self.load_kademarcenter_config()

####  UsbTray Module  ####
        self.usbtray = UsbTray()
        self.connect(self.usbtray, SIGNAL("showmsg"), self.showmsg)
##########################

####  IvMan Work  ####
        self.HardwareDetect = HardwareDetect()
        self.connect(self.HardwareDetect, SIGNAL("showmsg"), self.showmsg)
        self.connect(self.HardwareDetect, SIGNAL("regeneraformusbtray"), self.regeneraformusbtray)
        self.connect(self.HardwareDetect, SIGNAL("showusbtray"), self.showusbtray)
        self.HardwareDetect.start()
######################

#############
####  TRAY MODULE & ACTIONS
#############
        #### TRAY ####
        self.tray = QSystemTrayIcon(self)
        self.trayMenu = QMenu()
        #Definicio de items del menu (solament el que son, icona i descripcio)
        #self.action_quit = QAction(QIcon("/usr/share/kademar/icons/convertir.png"), self.tr('Quit'), self)
        self.action_mainwindow = QAction(QIcon("/usr/share/kademar/icons/endavant.png"), self.tr("Open kademar Center"), self)
        self.action_settings = QAction(QIcon("/usr/share/kademar/icons/configure.png"), self.tr("Configure"), self)


        #Afegit opcions de dalt, en el menu del context
        self.trayMenu.addAction(self.action_mainwindow)
        self.trayMenu.addAction(self.action_settings)

        #self.trayMenu.addAction(self.action_quit)

        #Connectar Accions al fer click a un del menu, la function que executa
        self.connect(self.action_mainwindow, SIGNAL("triggered()"), self.mainwindow)
        self.connect(self.action_settings, SIGNAL("triggered()"), self.showsettings)

        #self.connect(self.action_quit, SIGNAL("triggered()"), self.quitusbtray)

        #Quan fas clic al tray executa eventsdeltray (function)
        self.tray.connect( self.tray, SIGNAL( "activated(QSystemTrayIcon::ActivationReason)" ), self.eventsdeltray )

        self.trayIcon = QIcon("/usr/share/kademar/utils/kademarcenter/img/kademar.png")
        self.tray.setContextMenu(self.trayMenu)
        self.tray.setIcon(self.trayIcon)
        self.tray.setToolTip("kademar Center")
        self.tray.show()
#############
####  END  TRAY MODULE & ACTIONS
#############

#### INITIAL Services Start  ####
        #Initial start of services
        system(scripts.initial_service_start)
#################################

#### INITIAL DEVICE MOUNT ####
        #Initial mount of already plugged devices
        for udi in getoutput(scripts.initial_mount).split():
            print udi
            print "INITIAL DEVICE"
            system("touch /tmp/kademarcenter-inicial")
            self.HardwareDetect.processa_udi(udi, "add")
            system("rm -f /tmp/kademarcenter-inicial")
##############################

#############
####  PC INFO
#############

#Get PC info & put on info labels
        kernel=funcions_k.versiokernel()
        versiokademar=funcions_k.versiokademar()
        tipuskademar=funcions_k.tipuskademar()

        cpu=getoutput(""" grep 'cpu MHz' /proc/cpuinfo | awk '{ print $4 }' """)
        cpuinfo=getoutput(" cat /proc/cpuinfo | grep 'model name' ")
        ram=getoutput("""  grep 'MemTotal' /proc/meminfo | awk '{ print $2 }' """)
        hostname=getoutput("hostname -f")
        logedusers=getoutput("users")
        numlogedusers=len(logedusers.split(" "))

        self.ui.l_kdm.setText("kademar")
        self.ui.l_kern.setText(kernel)
        self.ui.l_ver.setText(versiokademar)
        self.ui.l_tipu.setText(tipuskademar)
        self.ui.l_cpu.setText(cpu.split("\n")[0]+" Mhz")
        self.ui.l_cpuinfo.setText(cpuinfo)
        self.ui.l_ram.setText(ram+" Mb")
        self.ui.l_host.setText(hostname)

        self.kademarstart()
        
        #if live-cd check if executing 32bit kademar on 64bit Machine
        global kademarstartconfig
        if not funcions_k.instalat() and kademarstartconfig.arch_warning:
            if getoutput("arch") != "x86_64": #if system kernel ISN'T 64bit
                #check if machine can support 64 bit system
                check64bit=getoutput(""" for i in `grep cache_alignment /proc/cpuinfo | cut -d: -f2`; do echo $i; break; done """).strip()
                checkSse3=getoutput("""  grep -i sse3 /proc/cpuinfo 2>/dev/null """)
                checkSse4=getoutput("""  grep -i sse4 /proc/cpuinfo 2>/dev/null """)
                if checkSse3 or checkSse4:  #if have sse3 or 4
                    if int(check64bit) >= 64:
                    #warn if it's a machine 64bit capable with a 32bit system
                        QMessageBox.critical(self, self.tr('Executing 32bit kademar on a 64bit Machine'), self.tr("Your computer is a 64bit capable, but you are executing a 32bit kademar.\nThis can cause performance issues and kademar experience could be reduced.\n\nFor live-cd use there's no problem, but if you want to install kademar on this machine, would be better if you download 64bit version from www.kademar.org"))


#############
####  END PC INFO
#############

        #Comprueba dispositivos USB y muestralo si eso
        self.regeneraformusbtray()

#Set visible/invisible main window
    def mainwindow(self):
        widget.setVisible( not widget.isVisible() )
#Correct method of quit
    def quitusbtray(self):
        app.quit()
        #self.usbtray.close()

#Click events on tray icon
    def eventsdeltray(self, arEvent):
       #Click boto esquerra
       if arEvent == self.tray.Trigger:
          #print "click esquerra"
          self.mainwindow()
       #if arEvent == self.tray.Context:
          #print "click dret"
          #self.regeneramenu()
          #widget.setVisible( not widget.isVisible() )
#Close event of window
    def closeEvent(self, event):
        event.ignore()
        self.mainwindow()
        #global pid,uid
        #self.quitusbtray()

#Show message on tray
    def showmsg(self,tipus, title, msg):
        #print "showmsg function", tipus, title, msg
        global kademarcenterconfig
        if kademarcenterconfig.warn_device_plugged_sound:
            if tipus=="info":
                system(self.play+" "+self.soundconnect+" &")
            elif tipus=="disconnect":
                system(self.play+" "+self.sounddisconnect+" &")
        else:
            print "disabled sound"


        if kademarcenterconfig.warn_device_plugged_ballon:
            self.tray.showMessage(title, msg)
        ##print "MISSATGE"+title+msg
        #system("sleep 1")

    def fifomsg(self, msg):
        #print msg
        print len(msg.split("-"))
        if len(msg.split("-"))>=2:
            self.showmsg("info",msg.split("-")[0],msg.split("-")[1])
        else:
            self.showmsg("info",msg.split("-")[0]," ")

    def showmsgupdate(self, num):
        print "UPDATES"
        print num
        self.showmsg("update",self.tr("Updade Available"),self.tr("Update available for %s packages." %(num)) )


    def regeneraformusbtray(self):
        a = self.usbtray.regeneraform()
        print a
        asplitted=a.split(",")
        #print "canvis usbtray regeneraform kademarcenter"
        #print usbtray.canvis
        #if usbtray.tray.isVisible():
        if asplitted[0] != "si":
            print "kademar center tanca usbtray"
            self.usbtray.tray.hide()
            
            #Warn to close usbtray only once
            if not self.usbtrayclosed:
                self.usbtrayclosed=True
                self.showmsg("info","UsbTray",self.tr("Closed, there's no remaining massive storage devices."))
        else:
            #Activate message "Warn to close usbtray only once"
            if self.usbtrayclosed:
                self.usbtrayclosed=False
            print "kademar center mostra usbtray"
            self.usbtray.tray.show()
            self.usbtray.regeneramenu()
        #else:
            #print "usbtray is not visible"
        #Hi ha hagut canvis i estan registrats
        if asplitted[1]=="si":
            if asplitted[2]=="rem": #Els canvis es de desconnectar dispositius
               self.HardwareDetect.umountdispo(asplitted[3]) #.split(" ")) #Dons els desmuntem

    def showusbtray(self):
        self.usbtray.tray.show()


    def showsettings(self):
        import Settings
        self.settings = Settings.Settings()
        #settings.settings.setParent(self)
        self.connect(self.settings, SIGNAL("end"), self.load_kademarcenter_config)
        self.settings.show()

#Function to start kademarstart if not desactivated
    def kademarstart(self):
        global kademarstartconfig
        kademarstartconffile="kademarstart_conf.py"
        kademarstartglobalfile="/usr/share/kademar/utils/kademarcenter/cfg/"+kademarstartconffile
        if path.exists(kademarstartglobalfile):
            kademarstartconfig=import_from(kademarstartglobalfile)

        home=getoutput("echo $HOME")
        kademarstartlocalfile=home+"/.kademar/"+kademarstartconffile
        if path.exists(kademarstartlocalfile):
            #print localfile
            kademarstartconfig=import_from(kademarstartlocalfile)

        if kademarstartconfig.autostart:
            #system("python /usr/share/kademar/utils/kademarstart/kademarstart.py &")
            from kademarstart_kademarcenter import kademarstart
            self.kademarstart = kademarstart()
            self.kademarstart.show()
            #self.kademarstart.start()
        else:
            print "kademarstart desctivated"


    def load_kademarcenter_config(self):
        global kademarcenterconfig
        kademarcenterconffile="kademarcenter_conf.py"
        kademarcenterglobalfile="/usr/share/kademar/utils/kademarcenter/cfg/"+kademarcenterconffile
        if path.exists(kademarcenterglobalfile):
            kademarcenterconfig=import_from(kademarcenterglobalfile)

        home=getoutput("echo $HOME")
        kademarcenterlocalfile=home+"/.kademar/"+kademarcenterconffile
        if path.exists(kademarcenterlocalfile):
            #print localfile
            kademarcenterconfig=import_from(kademarcenterlocalfile)