Basic PyQt5 + Python 3.6 support
This commit is contained in:
parent
2038c0f763
commit
c3e25efaef
225
src/mambatray
225
src/mambatray
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python3.6
|
||||||
# mambatray 2
|
# mambatray 2
|
||||||
# Copyright (C) 2011-2018 by Silvan Calarco
|
# Copyright (C) 2011-2019 by Silvan Calarco
|
||||||
# Copyright (C) 2011 by michiamophil
|
# Copyright (C) 2011 by michiamophil
|
||||||
# Distributed under the terms of the GPL version 3 FLOSS License
|
# Distributed under the terms of the GPL version 3 FLOSS License
|
||||||
#
|
#
|
||||||
@ -17,33 +17,36 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
|
|
||||||
def __init__(self, icon, parent=None):
|
def __init__(self, icon, parent=None):
|
||||||
global w, menu, contatore, srpm, lista, NetsrpmsArg, nOre, desktop_session
|
global w, menu, contatore, srpm, lista, NetsrpmsArg, nOre, desktop_session
|
||||||
nOre = 2
|
nOre = 2
|
||||||
srpm = ["skype", "flashplugin", "win32codecs", "msttcorefonts", "b43-firmware", "sun-java7", "sun-java8", "virtualbox-extension-pack", "chromium-pepper-flash", "spotify"]
|
srpm = ["skype", "flashplugin", "win32codecs", "msttcorefonts", "b43-firmware", "sun-java7", "sun-java8", "virtualbox-extension-pack", "chromium-pepper-flash", "spotify"]
|
||||||
NetsrpmsArg = "-c"
|
NetsrpmsArg = "-c"
|
||||||
lista = []
|
lista = []
|
||||||
contatore = 0
|
contatore = 0
|
||||||
w = parent
|
w = parent
|
||||||
QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
|
QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
|
||||||
menu = QtWidgets.QMenu(parent)
|
menu = QtWidgets.QMenu(parent)
|
||||||
|
|
||||||
desktop_session = os.path.basename(os.getenv('DESKTOP_SESSION'))
|
try:
|
||||||
|
desktop_session = os.path.basename(os.getenv('DESKTOP_SESSION'))
|
||||||
|
except:
|
||||||
|
desktop_session = 'default'
|
||||||
|
|
||||||
if desktop_session == 'default':
|
if desktop_session == 'default':
|
||||||
desktop_session = 'plasma'
|
desktop_session = 'plasma'
|
||||||
elif desktop_session[:3] == 'kde':
|
elif desktop_session[:3] == 'kde':
|
||||||
desktop_session = 'kde'
|
desktop_session = 'kde'
|
||||||
|
|
||||||
# refresh packages cache timer
|
# refresh packages cache timer
|
||||||
global refreshPackagesTimer, refreshPackagesCacheProcess, checkSRPMSUpdatesTimer, SRPMUpdateProcess, networkOnlineProcess
|
global refreshPackagesTimer, refreshPackagesCacheProcess, checkSRPMSUpdatesTimer, SRPMUpdateProcess, networkOnlineProcess
|
||||||
refreshPackagesTimer = QtCore.QTimer(self)
|
refreshPackagesTimer = QtCore.QTimer(self)
|
||||||
checkSRPMSUpdatesTimer = QtCore.QTimer(self)
|
checkSRPMSUpdatesTimer = QtCore.QTimer(self)
|
||||||
refreshPackagesCacheProcess = QtCore.QProcess(self)
|
refreshPackagesCacheProcess = QtCore.QProcess(self)
|
||||||
SRPMUpdateProcess = QtCore.QProcess(self)
|
SRPMUpdateProcess = QtCore.QProcess(self)
|
||||||
networkOnlineProcess = QtCore.QProcess(self)
|
networkOnlineProcess = QtCore.QProcess(self)
|
||||||
refreshPackagesTimer.timeout.connect(self.refreshPackagesCache)
|
refreshPackagesTimer.timeout.connect(self.refreshPackagesCache)
|
||||||
refreshPackagesCacheProcess.finished.connect(self.restartRefreshPackagesTimer)
|
refreshPackagesCacheProcess.finished.connect(self.restartRefreshPackagesTimer)
|
||||||
checkSRPMSUpdatesTimer.timeout.connect(self.SRPMSCheckUpgradeList)
|
checkSRPMSUpdatesTimer.timeout.connect(self.SRPMSCheckUpgradeList)
|
||||||
|
|
||||||
# software menu
|
# software menu
|
||||||
global softwareManagerProcess, softwareCheckUpgradesProcess, softwareBaseInstallsProcess, dcopServerProcess
|
global softwareManagerProcess, softwareCheckUpgradesProcess, softwareBaseInstallsProcess, dcopServerProcess
|
||||||
softwareManagerProcess = QtCore.QProcess(self)
|
softwareManagerProcess = QtCore.QProcess(self)
|
||||||
@ -60,14 +63,14 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
|
|
||||||
softwareBaseInstallsAction = softwareMenu.addAction(QtGui.QIcon.fromTheme("openmamba"),_("openmamba components..."))
|
softwareBaseInstallsAction = softwareMenu.addAction(QtGui.QIcon.fromTheme("openmamba"),_("openmamba components..."))
|
||||||
softwareBaseInstallsAction.triggered.connect(self.softwareBaseInstalls)
|
softwareBaseInstallsAction.triggered.connect(self.softwareBaseInstalls)
|
||||||
|
|
||||||
# network menu
|
# network menu
|
||||||
global networkFirewallDisableProcess, networkFirewallEnableProcess, networkFirewallConfigureProcess, networkProxyProcess
|
global networkFirewallDisableProcess, networkFirewallEnableProcess, networkFirewallConfigureProcess, networkProxyProcess
|
||||||
networkFirewallDisableProcess = QtCore.QProcess(self)
|
networkFirewallDisableProcess = QtCore.QProcess(self)
|
||||||
networkFirewallEnableProcess = QtCore.QProcess(self)
|
networkFirewallEnableProcess = QtCore.QProcess(self)
|
||||||
networkFirewallConfigureProcess = QtCore.QProcess(self)
|
networkFirewallConfigureProcess = QtCore.QProcess(self)
|
||||||
networkProxyProcess = QtCore.QProcess(self)
|
networkProxyProcess = QtCore.QProcess(self)
|
||||||
|
|
||||||
networkMenu = menu.addMenu(QtGui.QIcon.fromTheme("preferences-system-network"),_("Network"))
|
networkMenu = menu.addMenu(QtGui.QIcon.fromTheme("preferences-system-network"),_("Network"))
|
||||||
networkFirewallMenu = networkMenu.addMenu(QtGui.QIcon.fromTheme("security-medium"),_("Firewall"))
|
networkFirewallMenu = networkMenu.addMenu(QtGui.QIcon.fromTheme("security-medium"),_("Firewall"))
|
||||||
networkFirewallDisableAction = networkFirewallMenu.addAction(QtGui.QIcon.fromTheme("security-low"),_("Disable"))
|
networkFirewallDisableAction = networkFirewallMenu.addAction(QtGui.QIcon.fromTheme("security-low"),_("Disable"))
|
||||||
@ -87,7 +90,7 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
aboutAction = menu.addSeparator()
|
aboutAction = menu.addSeparator()
|
||||||
aboutAction = menu.addAction(QtGui.QIcon.fromTheme("help-about"),_("About"))
|
aboutAction = menu.addAction(QtGui.QIcon.fromTheme("help-about"),_("About"))
|
||||||
aboutAction.triggered.connect(self.about)
|
aboutAction.triggered.connect(self.about)
|
||||||
|
|
||||||
self.setContextMenu(menu)
|
self.setContextMenu(menu)
|
||||||
self.setToolTip(_("openmamba control center"))
|
self.setToolTip(_("openmamba control center"))
|
||||||
self.activated.connect(self.iconActivated)
|
self.activated.connect(self.iconActivated)
|
||||||
@ -95,76 +98,76 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
# the first time refresh packages cache after 5 minutes
|
# the first time refresh packages cache after 5 minutes
|
||||||
refreshPackagesTimer.start( 5 * 60000 )
|
refreshPackagesTimer.start( 5 * 60000 )
|
||||||
# the first time check for SRPMS updates after 4 minutes
|
# the first time check for SRPMS updates after 4 minutes
|
||||||
checkSRPMSUpdatesTimer.start( 4 * 60000 )
|
checkSRPMSUpdatesTimer.start( 4 * 60000 )
|
||||||
|
|
||||||
|
|
||||||
def setProxyForSmart(self):
|
def setProxyForSmart(self):
|
||||||
setProxyProcess = QtCore.QProcess(self)
|
setProxyProcess = QtCore.QProcess(self)
|
||||||
pf = libproxy.ProxyFactory()
|
pf = libproxy.ProxyFactory()
|
||||||
for protocol in ["http","https","ftp"]:
|
for protocol in ["http","https","ftp"]:
|
||||||
proxies = pf.getProxies("%s://openmamba.org" % protocol)
|
proxies = pf.getProxies("%s://openmamba.org" % protocol)
|
||||||
for proxy in proxies:
|
for proxy in proxies:
|
||||||
if proxy == "direct://":
|
if proxy == "direct://":
|
||||||
setProxyProcess.execute("smart",['config','--remove','%s_proxy' % protocol])
|
setProxyProcess.execute("smart",['config','--remove','%s_proxy' % protocol])
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
setProxyProcess.execute("smart",['config','--set','%s_proxy=%s' %(protocol,proxy)])
|
setProxyProcess.execute("smart",['config','--set','%s_proxy=%s' %(protocol,proxy)])
|
||||||
break
|
break
|
||||||
|
|
||||||
def iconActivated(self, reason):
|
def iconActivated(self, reason):
|
||||||
if reason in (QtWidgets.QSystemTrayIcon.Trigger, QtWidgets.QSystemTrayIcon.DoubleClick):
|
if reason in (QtWidgets.QSystemTrayIcon.Trigger, QtWidgets.QSystemTrayIcon.DoubleClick):
|
||||||
menu.popup(self.geometry().center())
|
menu.popup(self.geometry().center())
|
||||||
|
|
||||||
def about(self):
|
def about(self):
|
||||||
global version
|
global version
|
||||||
path = '/etc/openmamba-release'
|
path = '/etc/openmamba-release'
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
v = open(path, 'r')
|
v = open(path, 'r')
|
||||||
version = v.read()
|
version = v.read()
|
||||||
a = self.FormattaInfo()
|
a = self.FormattaInfo()
|
||||||
version = "<ul><li>"+_("<font color=\"green\">open</font>mamba release:")+" <i>"+a[0]+"</i><li>"+_("Platform: ")+"<i>"+a[1]+"</i></ul>"
|
version = "<ul><li>"+_("<font color=\"green\">open</font>mamba release:")+" <i>"+a[0]+"</i><li>"+_("Platform: ")+"<i>"+a[1]+"</i></ul>"
|
||||||
v.close()
|
v.close()
|
||||||
else:
|
else:
|
||||||
version = _("Error: Unable to find /etc/openmamba-release")
|
version = _("Error: Unable to find /etc/openmamba-release")
|
||||||
QtWidgets.QMessageBox.about(menu, _("About"),
|
QtWidgets.QMessageBox.about(menu, _("About"),
|
||||||
"<center><b>"+_("openmamba control center")+"</b>"
|
"<center><b>"+_("openmamba control center")+"</b>"
|
||||||
"<br><br>Copyright(c) 2011-2018 by Silvan Calarco"
|
"<br><br>Copyright(c) 2011-2019 by Silvan Calarco"
|
||||||
"<br>Copyright(c) 2011 by michiamophil"
|
"<br>Copyright(c) 2011 by michiamophil"
|
||||||
"<br><br><b>"+_("System info:")+"</b></center>"
|
"<br><br><b>"+_("System info:")+"</b></center>"
|
||||||
""+_(version)+"<center><a href=\"http://openmamba.org\">http://openmamba.org</a></center>")
|
""+_(version)+"<center><a href=\"http://openmamba.org\">http://openmamba.org</a></center>")
|
||||||
|
|
||||||
def FormattaInfo(self):
|
def FormattaInfo(self):
|
||||||
result = []
|
result = []
|
||||||
v = version
|
v = version
|
||||||
#result[0]=versione
|
#result[0]=versione
|
||||||
result.append(v[ v.find("openmamba release ")+18 : v.find(" for") ] + " " + v[ v.find("(") : v.find(")")+1 ])
|
result.append(v[ v.find("openmamba release ")+18 : v.find(" for") ] + " " + v[ v.find("(") : v.find(")")+1 ])
|
||||||
#result[1] = piattaforma
|
#result[1] = piattaforma
|
||||||
result.append(v[ v.find("for")+4 : v.find("(") ])
|
result.append(v[ v.find("for")+4 : v.find("(") ])
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def networkOnline(self):
|
def networkOnline(self):
|
||||||
return networkOnlineProcess.execute("/usr/bin/nm-online",['-q','-x'])
|
return networkOnlineProcess.execute("/usr/bin/nm-online",['-q','-x'])
|
||||||
|
|
||||||
def softwareManager(self):
|
def softwareManager(self):
|
||||||
self.setProxyForSmart()
|
self.setProxyForSmart()
|
||||||
if desktop_session == 'plasma':
|
if desktop_session == 'plasma':
|
||||||
softwareManagerProcess.execute("/usr/bin/plasma-discover", ['--mode', 'Browsing'])
|
softwareManagerProcess.execute("/usr/bin/plasma-discover", ['--mode', 'Browsing'])
|
||||||
elif desktop_session == 'kde':
|
elif desktop_session == 'kde':
|
||||||
softwareManagerProcess.execute("/opt/kde/bin/apper")
|
softwareManagerProcess.execute("/opt/kde/bin/apper")
|
||||||
else:
|
else:
|
||||||
softwareManagerProcess.execute("/usr/bin/gpk-application")
|
softwareManagerProcess.execute("/usr/bin/gpk-application")
|
||||||
|
|
||||||
def softwareCheckUpgrades(self):
|
def softwareCheckUpgrades(self):
|
||||||
self.setProxyForSmart()
|
self.setProxyForSmart()
|
||||||
if desktop_session == 'plasma':
|
if desktop_session == 'plasma':
|
||||||
softwareCheckUpgradesProcess.start("/usr/bin/plasma-discover", ['--mode', 'Update'])
|
softwareCheckUpgradesProcess.start("/usr/bin/plasma-discover", ['--mode', 'Update'])
|
||||||
elif desktop_session == 'kde':
|
elif desktop_session == 'kde':
|
||||||
softwareCheckUpgradesProcess.start("/opt/kde/bin/apper", ['--updates'])
|
softwareCheckUpgradesProcess.start("/opt/kde/bin/apper", ['--updates'])
|
||||||
else:
|
else:
|
||||||
softwareCheckUpgradesProcess.start("/usr/bin/gpk-update-viewer")
|
softwareCheckUpgradesProcess.start("/usr/bin/gpk-update-viewer")
|
||||||
|
|
||||||
def refreshPackagesCache(self):
|
def refreshPackagesCache(self):
|
||||||
self.setProxyForSmart()
|
self.setProxyForSmart()
|
||||||
refreshPackagesTimer.stop()
|
refreshPackagesTimer.stop()
|
||||||
refreshPackagesCacheProcess.start("/usr/bin/pkcon", ['refresh'])
|
refreshPackagesCacheProcess.start("/usr/bin/pkcon", ['refresh'])
|
||||||
|
|
||||||
@ -195,74 +198,72 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
self.showMessage("Firewall", _("Could not enable firewall"))
|
self.showMessage("Firewall", _("Could not enable firewall"))
|
||||||
|
|
||||||
def networkFirewallConfigure(self):
|
def networkFirewallConfigure(self):
|
||||||
if desktop_session == 'kde' or desktop_session == 'plasma':
|
if desktop_session == 'kde' or desktop_session == 'plasma':
|
||||||
networkFirewallConfigureProcess.execute("/opt/kde/bin/kcmshell4", list(set(['ufw'])))
|
networkFirewallConfigureProcess.execute("/opt/kde/bin/kcmshell4", list(set(['ufw'])))
|
||||||
else:
|
else:
|
||||||
networkFirewallConfigureProcess.execute("/usr/bin/gufw")
|
networkFirewallConfigureProcess.execute("/usr/bin/gufw")
|
||||||
|
|
||||||
def networkProxy(self):
|
def networkProxy(self):
|
||||||
if desktop_session == 'plasma':
|
if desktop_session == 'plasma':
|
||||||
networkProxyProcess.execute("/usr/bin/kcmshell5", list(set(['proxy'])))
|
networkProxyProcess.execute("/usr/bin/kcmshell5", list(set(['proxy'])))
|
||||||
elif desktop_session == 'kde':
|
elif desktop_session == 'kde':
|
||||||
networkProxyProcess.execute("/opt/kde/bin/kcmshell4", list(set(['proxy'])))
|
networkProxyProcess.execute("/opt/kde/bin/kcmshell4", list(set(['proxy'])))
|
||||||
elif desktop_session == 'gnome':
|
elif desktop_session == 'gnome':
|
||||||
networkProxyProcess.execute("/usr/bin/gnome-control-center", "network")
|
networkProxyProcess.execute("/usr/bin/gnome-control-center", "network")
|
||||||
self.setProxyForSmart()
|
self.setProxyForSmart()
|
||||||
|
|
||||||
def SRPMSCheckUpgradeList(self):
|
def SRPMSCheckUpgradeList(self):
|
||||||
checkSRPMSUpdatesTimer.stop()
|
checkSRPMSUpdatesTimer.stop()
|
||||||
global contatore, lista, NetsrpmsArg
|
global contatore, lista, NetsrpmsArg
|
||||||
if (self.networkOnline() == 0):
|
if (self.networkOnline() == 0):
|
||||||
try:
|
try:
|
||||||
SRPMUpdateProcess.start("/usr/bin/openmamba-netsrpms",[NetsrpmsArg,srpm[contatore]])
|
SRPMUpdateProcess.start("/usr/bin/openmamba-netsrpms",[NetsrpmsArg,srpm[contatore]])
|
||||||
except: #supera il limite dell'indice nella lista
|
except: #supera il limite dell'indice nella lista
|
||||||
contatore = 0
|
contatore = 0
|
||||||
if NetsrpmsArg == '-c':
|
if NetsrpmsArg == '-c':
|
||||||
self.SRPMSAskAndInstall()
|
self.SRPMSAskAndInstall()
|
||||||
else:
|
else:
|
||||||
lista = []
|
lista = []
|
||||||
NetsrpmsArg = '-c'
|
NetsrpmsArg = '-c'
|
||||||
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
||||||
|
|
||||||
#viene eseguita per ogni SRPM al termine del processo SRPMUpdateProcess
|
#viene eseguita per ogni SRPM al termine del processo SRPMUpdateProcess
|
||||||
def SRPMSCheckUpgrade(self, status):
|
def SRPMSCheckUpgrade(self, status):
|
||||||
global contatore, lista
|
global contatore, lista
|
||||||
if status == 1:
|
if status == 1:
|
||||||
lista.append(srpm[contatore])
|
lista.append(srpm[contatore])
|
||||||
contatore += 1
|
contatore += 1
|
||||||
self.SRPMSCheckUpgradeList()
|
self.SRPMSCheckUpgradeList()
|
||||||
|
|
||||||
#viene eseguita una volta terminata la fase di controllo degli aggiornamenti
|
#viene eseguita una volta terminata la fase di controllo degli aggiornamenti
|
||||||
def SRPMSAskAndInstall(self):
|
def SRPMSAskAndInstall(self):
|
||||||
global NetsrpmsArg, lista
|
global NetsrpmsArg, lista
|
||||||
if not lista == []:
|
if not lista == []:
|
||||||
Lista = self.Lista()
|
Lista = self.Lista()
|
||||||
msg = QtGui.QMessageBox.question(menu, (_("Not Open Source openmamba components")), (_("The following components are available for update: ") + "\n\n" + Lista + "\n\n" + _("Ok to proceed?")), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes)
|
msg = QtGui.QMessageBox.question(menu, (_("Not Open Source openmamba components")), (_("The following components are available for update: ") + "\n\n" + Lista + "\n\n" + _("Ok to proceed?")), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes)
|
||||||
if msg == QtGui.QMessageBox.Yes:
|
if msg == QtGui.QMessageBox.Yes:
|
||||||
NetsrpmsArg = '-u'
|
NetsrpmsArg = '-u'
|
||||||
self.SRPMSCheckUpgradeList()
|
self.SRPMSCheckUpgradeList()
|
||||||
else:
|
else:
|
||||||
lista = []
|
lista = []
|
||||||
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
||||||
else:
|
else:
|
||||||
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
checkSRPMSUpdatesTimer.start((nOre * 60) * 60000)
|
||||||
|
|
||||||
#partendo dalla lista lista (scusate il gioco di parole :) ) restituisce la lista in modo 'leggibile'
|
#partendo dalla lista lista (scusate il gioco di parole :) ) restituisce la lista in modo 'leggibile'
|
||||||
def Lista(self):
|
def Lista(self):
|
||||||
testo = ''
|
testo = ''
|
||||||
for a in lista:
|
for a in lista:
|
||||||
testo = testo + a + ', '
|
testo = testo + a + ', '
|
||||||
return testo[0:len(testo)-2]
|
return testo[0:len(testo)-2]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
if (app.isSessionRestored()):
|
if (app.isSessionRestored()):
|
||||||
app.exit(1)
|
app.exit(1)
|
||||||
else:
|
else:
|
||||||
app.setQuitOnLastWindowClosed(0)
|
app.setQuitOnLastWindowClosed(0)
|
||||||
gettext.install('mambatray', '/usr/share/locale', unicode=1)
|
gettext.install('mambatray', '/usr/share/locale')
|
||||||
w = QtWidgets.QWidget()
|
w = QtWidgets.QWidget()
|
||||||
w.setWindowIcon(QtGui.QIcon.fromTheme("mambatray",QtGui.QIcon("/usr/share/icons/hicolor/64x64/apps/mambatray.png")))
|
w.setWindowIcon(QtGui.QIcon.fromTheme("mambatray",QtGui.QIcon("/usr/share/icons/hicolor/64x64/apps/mambatray.png")))
|
||||||
trayIcon = SystemTrayIcon(QtGui.QIcon.fromTheme("mambatray", QtGui.QIcon("/usr/share/icons/hicolor/32x32/apps/mambatray.png")), w)
|
trayIcon = SystemTrayIcon(QtGui.QIcon.fromTheme("mambatray", QtGui.QIcon("/usr/share/icons/hicolor/32x32/apps/mambatray.png")), w)
|
||||||
|
Loading…
Reference in New Issue
Block a user