This commit is contained in:
arcan1s
2014-04-04 05:09:09 +04:00
parent 7353fdfe0f
commit c1d55962a7
6 changed files with 254 additions and 342 deletions

View File

@ -21,7 +21,7 @@ from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyKDE4.kdecore import * from PyKDE4.kdecore import *
from PyKDE4.kdeui import * from PyKDE4.kdeui import *
import commands, os import commands
import config import config
@ -38,52 +38,37 @@ class ConfigDefinition:
settings = config.Config(self.parent) settings = config.Config(self.parent)
# update local variables # update local variables
self.parent.interval = self.configpage.ui.spinBox_interval.value() settings.set('interval', self.configpage.ui.spinBox_interval.value())
settings.set('interval', self.parent.interval) settings.set('font_family', str(self.configpage.ui.fontComboBox.currentFont().family()))
self.parent.font_family = str(self.configpage.ui.fontComboBox.currentFont().family()) settings.set('font_size', self.configpage.ui.spinBox_fontSize.value())
settings.set('font_family', self.parent.font_family) settings.set('font_color', str(self.configpage.ui.kcolorcombo.color().name()))
self.parent.font_size = self.configpage.ui.spinBox_fontSize.value() settings.set('font_style', str(self.configpage.ui.comboBox_style.currentText()))
settings.set('font_size', self.parent.font_size) settings.set('font_weight', self.configpage.ui.spinBox_weight.value())
self.parent.font_color = str(self.configpage.ui.kcolorcombo.color().name())
settings.set('font_color', self.parent.font_color)
if (self.configpage.ui.comboBox_style.currentIndex() == 0):
self.parent.font_style = 'normal'
else:
self.parent.font_style = 'italic'
settings.set('font_style', self.parent.font_style)
self.parent.font_weight = self.configpage.ui.spinBox_weight.value()
settings.set('font_weight', self.parent.font_weight)
self.parent.custom_time = str(self.configpage.ui.lineEdit_timeFormat.text()) settings.set('custom_time', str(self.configpage.ui.lineEdit_timeFormat.text()))
settings.set('custom_time', self.parent.custom_time) settings.set('custom_uptime', str(self.configpage.ui.lineEdit_uptimeFormat.text()))
self.parent.custom_uptime = str(self.configpage.ui.lineEdit_uptimeFormat.text()) item = QStringList()
settings.set('custom_uptime', self.parent.custom_uptime) for i in range(self.configpage.ui.listWidget_tempDevice.count()):
# temp and mount below item.append(self.configpage.ui.listWidget_tempDevice.item(i).text())
self.parent.hddNames = [] settings.set('temp_device', str(item.join(QString('@@'))))
self.parent.hdd = {} item = QStringList()
for i in range(self.configpage.ui.listWidget_mount.count()):
item.append(self.configpage.ui.listWidget_mount.item(i).text())
settings.set('mount', str(item.join(QString('@@'))))
item = QStringList()
for i in range(self.configpage.ui.listWidget_hddDevice.count()): for i in range(self.configpage.ui.listWidget_hddDevice.count()):
item = self.configpage.ui.listWidget_hddDevice.item(i).text() item.append(self.configpage.ui.listWidget_hddDevice.item(i).text())
self.parent.hddNames.append(str(item)) settings.set('hdd', str(item.join(QString('@@'))))
self.parent.hdd[str(item)] =" 0.0" settings.set('netdir', str(self.configpage.ui.lineEdit_netdir.text()))
settings.set('hdd', '@@'.join(self.parent.hddNames)) settings.set('netdevBool', self.configpage.ui.checkBox_netdev.checkState())
self.parent.netdir = str(self.configpage.ui.lineEdit_netdir.text()) settings.set('custom_netdev', str(self.configpage.ui.comboBox_netdev.currentText()))
settings.set('netdir', self.parent.netdir) settings.set('battery_device', str(self.configpage.ui.lineEdit_batdev.text()))
self.parent.netdevBool = str(self.configpage.ui.checkBox_netdev.checkState()) settings.set('ac_device', str(self.configpage.ui.lineEdit_acdev.text()))
settings.set('netdevBool', self.parent.netdevBool) settings.set('player_name', self.configpage.ui.comboBox_playerSelect.currentIndex())
self.parent.custom_netdev = str(self.configpage.ui.comboBox_netdev.currentText())
settings.set('custom_netdev', self.parent.custom_netdev)
self.parent.battery_device = str(self.configpage.ui.lineEdit_batdev.text())
settings.set('battery_device', self.parent.battery_device)
self.parent.ac_device = str(self.configpage.ui.lineEdit_acdev.text())
settings.set('ac_device', self.parent.ac_device)
self.parent.player_name = self.configpage.ui.comboBox_playerSelect.currentIndex()
settings.set('player_name', self.parent.player_name)
self.parent.tooltipNum = self.configpage.ui.spinBox_tooltipNum.value() settings.set('tooltip_num', self.configpage.ui.spinBox_tooltipNum.value())
settings.set('tooltip_num', self.parent.tooltipNum)
for label in ['cpu', 'cpuclock', 'mem', 'swap', 'down', 'up']: for label in ['cpu', 'cpuclock', 'mem', 'swap', 'down', 'up']:
exec ('self.parent.tooltipColors["' + label + '"] = str(self.configpage.kcolorcombo_' + label + '.color().name())') exec('settings.set("' + label + '_color", str(self.configpage.kcolorcombo_' + label + '.color().name()))')
exec ('settings.set("' + label + '_color", self.parent.tooltipColors["' + label + '"])')
dataengineConfig = unicode(KGlobal.dirs().localkdedir()) + "/share/config/extsysmon.conf" dataengineConfig = unicode(KGlobal.dirs().localkdedir()) + "/share/config/extsysmon.conf"
try: try:
@ -97,6 +82,7 @@ class ConfigDefinition:
pass pass
# disconnecting from source and clear layout # disconnecting from source and clear layout
self.parent.disconnectFromSource()
if (self.parent.uptimeBool > 0): if (self.parent.uptimeBool > 0):
self.parent.systemmonitor.disconnectSource("system/uptime", self.parent) self.parent.systemmonitor.disconnectSource("system/uptime", self.parent)
self.parent.label_uptime.setText('') self.parent.label_uptime.setText('')
@ -118,13 +104,6 @@ class ConfigDefinition:
self.parent.systemmonitor.disconnectSource(item, self.parent) self.parent.systemmonitor.disconnectSource(item, self.parent)
self.parent.label_temp.setText('') self.parent.label_temp.setText('')
self.parent.layout.removeItem(self.parent.label_temp) self.parent.layout.removeItem(self.parent.label_temp)
self.parent.tempNames = []
self.parent.temp = {}
for i in range(self.configpage.ui.listWidget_tempDevice.count()):
item = self.configpage.ui.listWidget_tempDevice.item(i).text()
self.parent.tempNames.append(str(item))
self.parent.temp[str(item)] =" 0.0"
settings.set('temp_device', '@@'.join(self.parent.tempNames))
if (self.parent.gpuBool > 0): if (self.parent.gpuBool > 0):
self.parent.extsysmon.disconnectSource("gpu", self.parent) self.parent.extsysmon.disconnectSource("gpu", self.parent)
self.parent.label_gpu.setText('') self.parent.label_gpu.setText('')
@ -149,13 +128,6 @@ class ConfigDefinition:
self.parent.systemmonitor.disconnectSource("partitions" + item + "/filllevel", self.parent) self.parent.systemmonitor.disconnectSource("partitions" + item + "/filllevel", self.parent)
self.parent.label_hdd.setText('') self.parent.label_hdd.setText('')
self.parent.layout.removeItem(self.parent.label_hdd) self.parent.layout.removeItem(self.parent.label_hdd)
self.parent.mountNames = []
self.parent.mount = {}
for i in range(self.configpage.ui.listWidget_mount.count()):
item = self.configpage.ui.listWidget_mount.item(i).text()
self.parent.mountNames.append(str(item))
self.parent.mount[str(item)] =" 0.0"
settings.set('mount', '@@'.join(self.parent.mountNames))
if (self.parent.hddtempBool > 0): if (self.parent.hddtempBool > 0):
self.parent.extsysmon.disconnectSource("hddtemp", self.parent) self.parent.extsysmon.disconnectSource("hddtemp", self.parent)
self.parent.label_hddtemp.setText('') self.parent.label_hddtemp.setText('')

View File

@ -21,7 +21,6 @@ from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyKDE4.plasma import * from PyKDE4.plasma import *
from PyQt4 import uic from PyQt4 import uic
from PyKDE4 import plasmascript

View File

@ -19,8 +19,6 @@
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyKDE4.plasma import Plasma
from PyKDE4 import plasmascript
import datetime import datetime
@ -36,54 +34,48 @@ class DataEngine:
self.parent = parent self.parent = parent
def connectToEngine(self): def connectToEngine(self, bools=None, dataEngines=None, interval=1000, names=None):
"""function to initializate engine""" """function to initializate engine"""
self.parent.systemmonitor = self.parent.dataEngine("systemmonitor") if (bools['cpu'] > 0):
self.parent.extsysmon = self.parent.dataEngine("ext-sysmon") dataEngines['system'].connectSource("cpu/system/TotalLoad", self.parent, interval)
for core in range(8):
dataEngines['system'].connectSource("cpu/cpu" + str(core) + "/TotalLoad", self.parent, interval)
if (bools['cpuclock'] > 0):
dataEngines['system'].connectSource("cpu/system/AverageClock", self.parent, interval)
for core in range(8):
dataEngines['system'].connectSource("cpu/cpu" + str(core) + "/clock", self.parent, interval)
if (bools['custom'] > 0):
dataEngines['ext'].connectSource("custom", self.parent, interval)
if (bools['gpu'] > 0):
dataEngines['ext'].connectSource("gpu", self.parent, interval)
if (bools['gputemp'] > 0):
dataEngines['ext'].connectSource("gputemp", self.parent, interval)
if (bools['hdd'] > 0):
for item in names['hdd']:
dataEngines['system'].connectSource("partitions" + item + "/filllevel", self.parent, interval)
if (bools['hddtemp'] > 0):
dataEngines['ext'].connectSource("hddtemp", self.parent, interval)
if (bools['mem'] > 0):
dataEngines['system'].connectSource("mem/physical/free", self.parent, interval)
dataEngines['system'].connectSource("mem/physical/used", self.parent, interval)
dataEngines['system'].connectSource("mem/physical/application", self.parent, interval)
if (bools['net'] > 0):
self.updateNetdev = 0
dataEngines['system'].connectSource("network/interfaces/" + names['net'] + "/transmitter/data", self.parent, interval)
dataEngines['system'].connectSource("network/interfaces/" + names['net'] + "/receiver/data", self.parent, interval)
if (bools['player'] > 0):
dataEngines['ext'].connectSource("player", self.parent, interval)
if (bools['swap'] > 0):
dataEngines['system'].connectSource("mem/swap/free", self.parent, interval)
dataEngines['system'].connectSource("mem/swap/used", self.parent, interval)
if (bools['temp'] > 0):
for item in names['temp']:
dataEngines['system'].connectSource(item, self.parent, interval)
if (bools['time'] > 0):
dataEngines['time'].connectSource("Local", self.parent, 1000)
if (bools['uptime'] > 0):
dataEngines['system'].connectSource("system/uptime", self.parent, interval)
if (self.parent.timeBool > 0):
self.parent.timemon = self.parent.dataEngine("time")
self.parent.timemon.connectSource("Local", self.parent, 1000)
if (self.parent.uptimeBool > 0):
self.parent.systemmonitor.connectSource("system/uptime", self.parent, self.parent.interval)
if (self.parent.cpuBool > 0):
self.parent.systemmonitor.connectSource("cpu/system/TotalLoad", self.parent, self.parent.interval)
for core in self.parent.cpuCore.keys():
if (core > -1):
self.parent.systemmonitor.connectSource("cpu/cpu"+str(core)+"/TotalLoad", self.parent, self.parent.interval)
if (self.parent.cpuclockBool > 0):
self.parent.systemmonitor.connectSource("cpu/system/AverageClock", self.parent, self.parent.interval)
for core in self.parent.cpuClockCore.keys():
if (core > -1):
self.parent.systemmonitor.connectSource("cpu/cpu"+str(core)+"/clock", self.parent, self.parent.interval)
if (self.parent.tempBool > 0):
for item in self.parent.tempNames:
self.parent.systemmonitor.connectSource(item, self.parent, self.parent.interval)
if (self.parent.gpuBool > 0):
self.parent.extsysmon.connectSource("gpu", self.parent, self.parent.interval)
if (self.parent.gputempBool > 0):
self.parent.extsysmon.connectSource("gputemp", self.parent, self.parent.interval)
if (self.parent.memBool > 0):
self.parent.systemmonitor.connectSource("mem/physical/free", self.parent, int(self.parent.interval*0.5))
self.parent.systemmonitor.connectSource("mem/physical/used", self.parent, int(self.parent.interval*0.5))
self.parent.systemmonitor.connectSource("mem/physical/application", self.parent, int(self.parent.interval*0.5))
if (self.parent.swapBool > 0):
self.parent.systemmonitor.connectSource("mem/swap/free", self.parent, int(self.parent.interval*0.5))
self.parent.systemmonitor.connectSource("mem/swap/used", self.parent, int(self.parent.interval*0.5))
if (self.parent.hddBool > 0):
for item in self.parent.mountNames:
self.parent.systemmonitor.connectSource("partitions" + item + "/filllevel", self.parent, self.parent.interval)
if (self.parent.hddtempBool > 0):
self.parent.extsysmon.connectSource("hddtemp", self.parent, self.parent.interval)
if (self.parent.netBool > 0):
self.parent.updateNetdev = 0
self.parent.systemmonitor.connectSource("network/interfaces/"+self.parent.netdev+"/transmitter/data", self.parent, self.parent.interval)
self.parent.systemmonitor.connectSource("network/interfaces/"+self.parent.netdev+"/receiver/data", self.parent, self.parent.interval)
if (self.parent.playerBool > 0):
self.parent.extsysmon.connectSource("player", self.parent, self.parent.interval)
if (self.parent.customBool > 0):
self.parent.extsysmon.connectSource("custom", self.parent, self.parent.interval)
def dataUpdated(self, sourceName, data): def dataUpdated(self, sourceName, data):
"""function to update data""" """function to update data"""
@ -145,11 +137,11 @@ class DataEngine:
if (self.parent.updateNetdev == 100): if (self.parent.updateNetdev == 100):
self.parent.updateNetdev = 0 self.parent.updateNetdev = 0
if (self.parent.netNonFormat.split('@@')[0] == self.parent.netNonFormat): if (self.parent.netNonFormat.split('@@')[0] == self.parent.netNonFormat):
self.parent.systemmonitor.disconnectSource("network/interfaces/"+self.parent.netdev+"/transmitter/data", self.parent) dataEngines['system'].disconnectSource("network/interfaces/"+self.parent.netdev+"/transmitter/data", self.parent)
self.parent.systemmonitor.disconnectSource("network/interfaces/"+self.parent.netdev+"/receiver/data", self.parent) dataEngines['system'].disconnectSource("network/interfaces/"+self.parent.netdev+"/receiver/data", self.parent)
self.parent.netdev = self.parent.setupNetdev() self.parent.netdev = self.parent.setupNetdev()
self.parent.systemmonitor.connectSource("network/interfaces/"+self.parent.netdev+"/transmitter/data", self.parent, self.parent.interval) dataEngines['system'].connectSource("network/interfaces/"+self.parent.netdev+"/transmitter/data", self.parent, self.parent.interval)
self.parent.systemmonitor.connectSource("network/interfaces/"+self.parent.netdev+"/receiver/data", self.parent, self.parent.interval) dataEngines['system'].connectSource("network/interfaces/"+self.parent.netdev+"/receiver/data", self.parent, self.parent.interval)
if (self.parent.netNonFormat.split('$netdev')[0] != self.parent.netNonFormat): if (self.parent.netNonFormat.split('$netdev')[0] != self.parent.netNonFormat):
self.parent.netFormat = self.parent.netNonFormat.split('$netdev')[0] + self.parent.netdev + self.parent.netNonFormat.split('$netdev')[1] self.parent.netFormat = self.parent.netNonFormat.split('$netdev')[0] + self.parent.netdev + self.parent.netNonFormat.split('$netdev')[1]
else: else:
@ -247,7 +239,7 @@ class DataEngine:
line = line.split('$artist')[0] + artist + line.split('$artist')[1] line = line.split('$artist')[0] + artist + line.split('$artist')[1]
if (line.split('$progress')[0] != line): if (line.split('$progress')[0] != line):
timeText = '%02i:%02i' % (int(time)/60, int(time)%60) timeText = '%02i:%02i' % (int(time)/60, int(time)%60)
line = line.split('$progress')[0] + timeText + line.split('$progress')[1] line = line.split('$progress')[0] + progress + line.split('$progress')[1]
if (line.split('$time')[0] != line): if (line.split('$time')[0] != line):
timeText = '%02i:%02i' % (int(time)/60, int(time)%60) timeText = '%02i:%02i' % (int(time)/60, int(time)%60)
line = line.split('$time')[0] + timeText + line.split('$time')[1] line = line.split('$time')[0] + timeText + line.split('$time')[1]
@ -273,9 +265,7 @@ class DataEngine:
value = self.parent.custom_time value = self.parent.custom_time
for letters in timeLetters: for letters in timeLetters:
if (value.split('$'+letters)[0] != value): if (value.split('$'+letters)[0] != value):
value = value.split('$'+letters)[0] + \ value = value.split('$'+letters)[0] + str(rawDate.toString(letters).toUtf8()).decode("utf-8") + value.split('$'+letters)[1]
str(data[QString(u'DateTime')].toString(letters).toUtf8()).decode("utf-8") + \
value.split('$'+letters)[1]
line = self.parent.timeFormat.split('$custom')[0] + value + self.parent.timeFormat.split('$custom')[1] line = self.parent.timeFormat.split('$custom')[0] + value + self.parent.timeFormat.split('$custom')[1]
else: else:
line = self.parent.timeFormat line = self.parent.timeFormat

View File

@ -24,17 +24,34 @@ from PyKDE4.kdeui import *
from PyKDE4.kio import * from PyKDE4.kio import *
from PyKDE4 import plasmascript from PyKDE4 import plasmascript
from PyKDE4.plasma import Plasma from PyKDE4.plasma import Plasma
import commands, os, shutil, time import commands, os, shutil
import configdef import configdef
import configwindow import configwindow
import dataengine import dataengine
import ptmnotify
import reinit import reinit
import tooltip import tooltip
from util import * from util import *
class NewPlasmaLabel(Plasma.Label):
"""new Label with defined clicked() event"""
def __init__(self, applet, parent):
"""class definition"""
Plasma.Label.__init__(self, applet)
self.parent = parent
self.notify = ptmnotify.PTMNotify(self)
def mousePressEvent(self, event):
"""mouse click event"""
if (event.button() == Qt.LeftButton):
self.notify.init()
class pyTextWidget(plasmascript.Applet): class pyTextWidget(plasmascript.Applet):
def __init__(self, parent, args=None): def __init__(self, parent, args=None):
"""widget definition""" """widget definition"""
@ -44,18 +61,21 @@ class pyTextWidget(plasmascript.Applet):
def init(self): def init(self):
"""function to initializate widget""" """function to initializate widget"""
self._name = str(self.package().metadata().pluginName()) self._name = str(self.package().metadata().pluginName())
self.layout = QGraphicsLinearLayout(Qt.Horizontal, self.applet) self.setupVar()
self.dataengine = dataengine.DataEngine(self) self.dataengine = dataengine.DataEngine(self)
self.reinit = reinit.Reinit(self) self.reinit = reinit.Reinit(self, self.ptm['defaults'])
self.tooltipAgent = tooltip.Tooltip(self) self.tooltipAgent = tooltip.Tooltip(self)
self.timer = QTimer() self.timer = QTimer()
QObject.connect(self.timer, SIGNAL("timeout()"), self.updateLabel) QObject.connect(self.timer, SIGNAL("timeout()"), self.updateLabel)
self.setupVar()
self.initTooltip() self.initTooltip()
self.reinit.reinit(confAccept=False) self.reinit.reinit()
self.applet.setLayout(self.ptm['layout'])
self.theme = Plasma.Svg(self)
self.theme.setImagePath("widgets/background")
self.setBackgroundHints(Plasma.Applet.DefaultBackground)
self.setHasConfigurationInterface(True) self.setHasConfigurationInterface(True)
# Create notifyrc file if required # Create notifyrc file if required
@ -129,6 +149,59 @@ class pyTextWidget(plasmascript.Applet):
def setupVar(self): def setupVar(self):
"""function to setup variables""" """function to setup variables"""
self.ptm = {}
# dataengines
self.ptm['dataengine'] = {'ext':None, 'system':None, 'time':None}
# defaults
self.ptm['defaults'] = {}
self.ptm['defaults']['order'] = {'6':'bat', '1':'cpu', '7':'cpuclock', 'f':'custom', '9':'gpu',
'a':'gputemp', 'b':'hdd', 'c':'hddtemp', '3':'mem', '5':'net', '4':'swap', '2':'temp',
'8':'uptime', 'd':'player', 'e':'time'}
self.ptm['defaults']['format'] = {'bat':'[bat: $bat%$ac]', 'cpu':'[cpu: $cpu%]',
'cpuclock':'[mhz: $cpucl]', 'custom':'[$custom]', 'gpu':'[gpu: $gpu%]',
'gputemp':'[gpu temp: $gputemp°C]', 'hdd':'[hdd: $hdd0%]',
'hddtemp':'[hdd temp: $hddtemp0°C]', 'mem':'[mem: $mem%]',
'net':'[$netdev: $down/$upKB/s]', 'swap':'[swap: $swap%]',
'temp':'[temp: $temp0°C]', 'uptime':'[uptime: $uptime]',
'player':'[$artist - $title]', 'time':'[$time]'}
# labels
self.ptm['labels'] = {}
self.ptm['layout'] = QGraphicsLinearLayout(Qt.Horizontal, self.applet)
self.ptm['layout'].setContentsMargins(1, 1, 1, 1)
# names
self.ptm['names'] = {}
self.ptm['names']['hdd'] = []
self.ptm['names']['hddtemp'] = []
self.ptm['names']['net'] = ""
self.ptm['names']['temp'] = []
# tooltips
self.ptm['tooltip'] = {}
self.ptm['tooltip']['bounds'] = {'cpu':100.0, 'cpuclock':4000.0, 'mem':16000.0,
'swap':16000, 'down':10000.0, 'up':10000.0}
self.ptm['tooltip']['values'] = {'cpu':[0.0, 0.0], 'cpuclock':[0, 0], 'mem':[0, 0],
'swap':[0, 0], 'down':[0, 0], 'up':[0, 0]}
# values
self.ptm['values'] = {}
self.ptm['values']['cpu'] = {-1:0.0}
self.ptm['values']['cpuclock'] = {-1:0}
numCores = int(commands.getoutput("grep -c '^processor' /proc/cpuinfo"))
for i in range(numCores):
self.ptm['values']['cpu'][i] = 0.0
self.ptm['values']['cpuclock'][i] = 0
self.ptm['values']['hdd'] = {}
self.ptm['values']['hddtemp'] = {}
self.ptm['values']['mem'] = {'used':0, 'free':0, 'total':1}
self.ptm['values']['net'] = {"up":0, "down":0}
self.ptm['values']['swap'] = {'used':0, 'free':0, 'total':1}
self.ptm['values']['temp'] = {}
# variables
self.ptm['vars'] = {}
self.ptm['vars']['adv'] = {}
self.ptm['vars']['app'] = {}
self.ptm['vars']['bools'] = {}
self.ptm['vars']['formats'] = {}
self.ptm['vars']['tooltip'] = {}
self.cpuCore = {-1:" 0.0"} self.cpuCore = {-1:" 0.0"}
self.cpuClockCore = {-1:" 0"} self.cpuClockCore = {-1:" 0"}
numCores = int(commands.getoutput("grep -c '^processor' /proc/cpuinfo")) numCores = int(commands.getoutput("grep -c '^processor' /proc/cpuinfo"))
@ -315,6 +388,45 @@ class pyTextWidget(plasmascript.Applet):
self.label_temp.setText(text) self.label_temp.setText(text)
# api's functions
def addLabel(self, name=None, text=None, add=True):
"""function to add new label"""
if (add):
self.ptm['labels'][name] = NewPlasmaLabel(self.applet, self)
self.ptm['layout'].addItem(self.ptm['labels'][name])
self.setText(name, text)
else:
self.setText(name, '')
self.ptm['layout'].removeItem(self.ptm['labels'][name])
def applySettings(self, name=None, ptm=None):
"""function to read settings"""
self.ptm[name] = ptm
if (name == "names"):
for item in ['hdd', 'hddtemp', 'temp']:
for value in self.ptm['names'][item]:
self.ptm['values'][item][value] = 0.0
def connectToEngine(self):
"""function to connect to dataengines"""
self.ptm['dataengine']['ext'] = self.dataEngine("ext-sysmon")
self.ptm['dataengine']['system'] = self.dataEngine("systemmonitor")
self.ptm['dataengine']['time'] = self.dataEngine("time")
self.dataengine.connectToEngine(self.ptm['vars']['bools'], self.ptm['dataengine'],
self.ptm['vars']['app']['interval'], self.ptm['names'])
def disconnectFromSource(self):
"""function to disconnect from sources"""
def setText(self, name=None, text=None):
"""function to set text to labels"""
self.ptm['labels'][name].setText(text)
@pyqtSignature("dataUpdated(const QString &, const Plasma::DataEngine::Data &)") @pyqtSignature("dataUpdated(const QString &, const Plasma::DataEngine::Data &)")
def dataUpdated(self, sourceName, data): def dataUpdated(self, sourceName, data):
"""function to update label""" """function to update label"""

View File

@ -19,247 +19,86 @@
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyKDE4.plasma import Plasma
import config import config
import ptmnotify
class NewPlasmaLabel(Plasma.Label):
"""new Label with defined clicked() event"""
def __init__(self, applet, parent):
"""class definition"""
Plasma.Label.__init__(self, applet)
self.parent = parent
self.notify = ptmnotify.PTMNotify(self)
def mousePressEvent(self, event):
"""mouse click event"""
if (event.button() == Qt.LeftButton):
self.notify.init()
class Reinit(): class Reinit():
def __init__(self, parent): def __init__(self, parent, defaults=None):
"""class definition""" """class definition"""
self.parent = parent self.parent = parent
self.defaults = defaults
self.labels = defaults['format'].keys()
def reinit(self, confAccept=False): def reinit(self):
"""function to reinitializate widget""" """function to reinitializate widget"""
settings = config.Config(self.parent) settings = config.Config(self.parent)
self.parent.interval = settings.get('interval', 2000).toInt()[0] ptmVars = {}
self.parent.font_family = str(settings.get('font_family', 'Terminus'))
self.parent.font_size = settings.get('font_size', 12).toInt()[0]
self.parent.font_color = str(settings.get('font_color', '#000000'))
self.parent.font_style = str(settings.get('font_style', 'normal'))
self.parent.font_weight = settings.get('font_weight', 400).toInt()[0]
self.parent.formatLine = "<pre><p align=\"center\"><span style=\" font-family:'" + self.parent.font_family + "'; font-style:" + self.parent.font_style
self.parent.formatLine = self.parent.formatLine + "; font-size:" + str(self.parent.font_size) + "pt; font-weight:" + str(self.parent.font_weight)
self.parent.formatLine = self.parent.formatLine + "; color:" + self.parent.font_color + ";\">$LINE</span></p></pre>"
self.parent.custom_time = str(settings.get('custom_time', '$hh:$mm')) ptmVars['adv'] = {}
self.parent.custom_uptime = str(settings.get('custom_uptime', '$ds,$hs,$ms')) ptmVars['adv']['acDev'] = str(settings.get('ac_device', '/sys/class/power_supply/AC/online'))
self.parent.tempNames = [] ptmVars['adv']['batDev'] = str(settings.get('battery_device', '/sys/class/power_supply/BAT0/capacity'))
self.parent.temp = {} ptmVars['adv']['customTime'] = str(settings.get('custom_time', '$hh:$mm'))
for item in str(settings.get('temp_device', '')).split('@@'): ptmVars['adv']['customUptime'] = str(settings.get('custom_uptime', '$dd,$hh,$mm'))
self.parent.tempNames.append(item) ptmVars['adv']['netdevBool'] = settings.get('netdevBool', 0).toInt()[0]
self.parent.temp[item] =" 0.0" ptmVars['adv']['netDir'] = str(settings.get('netdir', '/sys/class/net'))
self.parent.mountNames = [] ptmVars['adv']['player'] = settings.get('player_name', 0).toInt()[0]
self.parent.mount = {}
for item in str(settings.get('mount', '/')).split('@@'):
self.parent.mountNames.append(item)
self.parent.mount[item] =" 0.0"
self.parent.hddNames = []
self.parent.hdd = {}
for item in str(settings.get('hdd', '/dev/sda')).split('@@'):
self.parent.hddNames.append(item)
self.parent.hdd[item] =" 0.0"
self.parent.netdir = str(settings.get('netdir', '/sys/class/net'))
self.parent.netdevBool = settings.get('netdevBool', 0).toInt()[0]
self.parent.custom_netdev = str(settings.get('custom_netdev', 'lo'))
self.parent.battery_device = str(settings.get('battery_device', '/sys/class/power_supply/BAT0/capacity'))
self.parent.ac_device = str(settings.get('ac_device', '/sys/class/power_supply/AC/online'))
self.parent.player_name = settings.get('player_name', 0).toInt()[0]
self.parent.tooltipNum = settings.get('tooltip_num', 100).toInt()[0] ptmVars['app'] = {}
self.parent.tooltipColors['cpu'] = str(settings.get('cpu_color', '#ff0000')) ptmVars['app']['format'] = "<pre><p align=\"center\"><span style=\" font-family:'" + str(settings.get('font_family', 'Terminus')) +\
self.parent.tooltipColors['cpuclock'] = str(settings.get('cpuclock_color', '#00ff00')) "'; font-style:" + str(settings.get('font_style', 'normal')) + "; font-size:" + str(settings.get('font_size', 12)) +\
self.parent.tooltipColors['mem'] = str(settings.get('mem_color', '#0000ff')) "pt; font-weight:" + str(settings.get('font_weight', 400)) + "; color:" + str(settings.get('font_color', '#000000')) +\
self.parent.tooltipColors['swap'] = str(settings.get('swap_color', '#ffff00')) ";\">$LINE</span></p></pre>"
self.parent.tooltipColors['down'] = str(settings.get('down_color', '#00ffff')) ptmVars['app']['interval'] = settings.get('interval', 2000).toInt()[0]
self.parent.tooltipColors['up'] = str(settings.get('up_color', '#ff00ff')) ptmVars['app']['order'] = str(settings.get('label_order', '1345'))
self.parent.tooltipReq = [] ptmVars['tooltip'] = {}
self.parent.label_order = str(settings.get('label_order', '1345')) ptmVars['tooltip']['colors'] = {}
for label in self.parent.dict_orders.values(): ptmVars['tooltip']['colors']['cpu'] = str(settings.get('cpu_color', '#ff0000'))
if ((label == 'cpu') or (label == 'mem') or (label == 'swap') or (label == 'net')): ptmVars['tooltip']['colors']['cpuclock'] = str(settings.get('cpuclock_color', '#00ff00'))
exec ('self.parent.' + label + 'Bool = settings.get("' + label + 'Bool", 2).toInt()[0]') ptmVars['tooltip']['colors']['mem'] = str(settings.get('mem_color', '#0000ff'))
ptmVars['tooltip']['colors']['swap'] = str(settings.get('swap_color', '#ffff00'))
ptmVars['tooltip']['colors']['down'] = str(settings.get('down_color', '#00ffff'))
ptmVars['tooltip']['colors']['up'] = str(settings.get('up_color', '#ff00ff'))
ptmVars['tooltip']['num'] = settings.get('tooltip_num', 100).toInt()[0]
ptmVars['bools'] = {}
for label in self.labels:
if (label in ['cpu', 'mem', 'swap', 'net']):
exec("ptmVars['bools'][label] = settings.get('" + label + "Bool', 2).toInt()[0]")
else: else:
exec ('self.parent.' + label + 'Bool = settings.get("' + label + 'Bool", 0).toInt()[0]') exec("ptmVars['bools'][label] = settings.get('" + label + "Bool', 0).toInt()[0]")
print (ptmVars['bools'])
# labels ptmNames = {}
for order in self.parent.label_order: ptmNames['hdd'] = str(settings.get('mount', '/')).split('@@')
if (order == "1"): ptmNames['hddtemp'] = str(settings.get('hdd', '/dev/sda')).split('@@')
if (self.parent.cpuBool > 0): ptmNames['net'] = str(settings.get('custom_netdev', 'lo'))
self.parent.cpuFormat = str(settings.get('cpuFormat', '[cpu: $cpu%]')) ptmNames['temp'] = str(settings.get('temp_device', '')).split('@@')
self.parent.label_cpu = NewPlasmaLabel(self.parent.applet, self.parent) self.parent.applySettings('names', ptmNames)
line = self.parent.cpuFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1] ptmVars['formats'] = {}
self.parent.label_cpu.setText(text) ptmVars['tooltip']['required'] = []
self.parent.layout.addItem(self.parent.label_cpu) for order in ptmVars['app']['order']:
if (self.parent.cpuBool == 2): label = self.defaults['order'][order]
self.parent.tooltipReq.append('cpu') if (ptmVars['bools'][label] > 0):
elif (order == "2"): exec("ptmVars['formats'][label] = str(settings.get('" + label + "Format', self.defaults['format'][label]))")
if (self.parent.tempBool > 0): text = ptmVars['app']['format'].split('$LINE')[0] + ptmVars['formats'][label] + ptmVars['app']['format'].split('$LINE')[1]
self.parent.tempFormat = str(settings.get('tempFormat', '[temp: $temp0&deg;C]')) self.parent.addLabel(label, text, True)
self.parent.label_temp = NewPlasmaLabel(self.parent.applet, self.parent) if ((label in ['cpu', 'cpuclock', 'mem', 'net', 'swap']) and (ptmVars['bools'][label] == 2)):
line = self.parent.tempFormat if (label == 'net'):
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1] ptmVars['tooltip']['required'].append("down")
self.parent.label_temp.setText(text) ptmVars['tooltip']['required'].append("up")
self.parent.layout.addItem(self.parent.label_temp)
elif (order == "3"):
if (self.parent.memBool > 0):
self.parent.memFormat = str(settings.get('memFormat', '[mem: $mem%]'))
self.parent.label_mem = NewPlasmaLabel(self.parent.applet, self.parent)
if (self.parent.memFormat.split('$memmb')[0] != self.parent.memFormat):
self.parent.memInMb = True
elif (self.parent.memFormat.split('$mem')[0] != self.parent.memFormat):
self.parent.memInMb = False
line = self.parent.memFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_mem.setText(text)
self.parent.layout.addItem(self.parent.label_mem)
if (self.parent.memBool == 2):
self.parent.tooltipReq.append('mem')
elif (order == "4"):
if (self.parent.swapBool > 0):
self.parent.swapFormat = str(settings.get('swapFormat', '[swap: $swap%]'))
self.parent.label_swap = NewPlasmaLabel(self.parent.applet, self.parent)
if (self.parent.swapFormat.split('$swapmb')[0] != self.parent.swapFormat):
self.parent.swapInMb = True
elif (self.parent.swapFormat.split('$swap')[0] != self.parent.swapFormat):
self.parent.swapInMb = False
line = self.parent.swapFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_swap.setText(text)
self.parent.layout.addItem(self.parent.label_swap)
if (self.parent.swapBool == 2):
self.parent.tooltipReq.append('swap')
elif (order == "5"):
if (self.parent.netBool > 0):
self.parent.netNonFormat = str(settings.get('netNonFormat', '[net: $down/$upKB/s]'))
self.parent.label_net = NewPlasmaLabel(self.parent.applet, self.parent)
if (self.parent.netdevBool > 0):
self.parent.netdev = self.parent.custom_netdev
else: else:
self.parent.netdev = self.parent.setupNetdev() ptmVars['tooltip']['required'].append(label)
if (self.parent.netNonFormat.split('$netdev')[0] != self.parent.netNonFormat): self.parent.applySettings('vars', ptmVars)
self.parent.netFormat = self.parent.netNonFormat.split('$netdev')[0] + self.parent.netdev + self.parent.netNonFormat.split('$netdev')[1]
else:
self.parent.netFormat = self.parent.netNonFormat
line = self.parent.netFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_net.setText(text)
self.parent.layout.addItem(self.parent.label_net)
if (self.parent.netBool == 2):
self.parent.tooltipReq.append('down')
self.parent.tooltipReq.append('up')
elif (order == "6"):
if (self.parent.batBool > 0):
self.parent.batFormat = str(settings.get('batFormat', '[bat: $bat%$ac]'))
self.parent.label_bat = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.batFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_bat.setText(text)
self.parent.layout.addItem(self.parent.label_bat)
elif (order == "7"):
if (self.parent.cpuclockBool > 0):
self.parent.cpuclockFormat = str(settings.get('cpuclockFormat', '[mhz: $cpucl]'))
self.parent.label_cpuclock = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.cpuclockFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_cpuclock.setText(text)
self.parent.layout.addItem(self.parent.label_cpuclock)
if (self.parent.cpuclockBool == 2):
self.parent.tooltipReq.append('cpuclock')
elif (order == "8"):
if (self.parent.uptimeBool > 0):
self.parent.uptimeFormat = str(settings.get('uptimeFormat', '[uptime: $uptime]'))
self.parent.label_uptime = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.uptimeFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_uptime.setText(text)
self.parent.layout.addItem(self.parent.label_uptime)
elif (order == "9"):
if (self.parent.gpuBool > 0):
self.parent.gpuFormat = str(settings.get('gpuFormat', '[gpu: $gpu%]'))
self.parent.label_gpu = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.gpuFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_gpu.setText(text)
self.parent.layout.addItem(self.parent.label_gpu)
elif (order == "a"):
if (self.parent.gputempBool > 0):
self.parent.gputempFormat = str(settings.get('gputempFormat', '[gpu temp: $gputemp&deg;C]'))
self.parent.label_gputemp = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.gputempFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_gputemp.setText(text)
self.parent.layout.addItem(self.parent.label_gputemp)
elif (order == "b"):
if (self.parent.hddBool > 0):
self.parent.hddFormat = str(settings.get('hddFormat', '[hdd: $hdd0%]'))
self.parent.label_hdd = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.hddFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_hdd.setText(text)
self.parent.layout.addItem(self.parent.label_hdd)
elif (order == "c"):
if (self.parent.hddtempBool > 0):
self.parent.hddtempFormat = str(settings.get('hddtempFormat', '[hdd temp: $hddtemp0&deg;C]'))
self.parent.label_hddtemp = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.hddtempFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_hddtemp.setText(text)
self.parent.layout.addItem(self.parent.label_hddtemp)
elif (order == "d"):
if (self.parent.playerBool > 0):
self.parent.playerFormat = str(settings.get('playerFormat', '[$artist - $title]'))
self.parent.label_player = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.playerFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_player.setText(text)
self.parent.layout.addItem(self.parent.label_player)
elif (order == "e"):
if (self.parent.timeBool > 0):
self.parent.timeFormat = str(settings.get('timeFormat', '[$time]'))
self.parent.label_time = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.timeFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_time.setText(text)
self.parent.layout.addItem(self.parent.label_time)
elif (order == "f"):
if (self.parent.customBool > 0):
self.parent.customFormat = str(settings.get('customFormat', '[$custom]'))
self.parent.label_custom = NewPlasmaLabel(self.parent.applet, self.parent)
line = self.parent.customFormat
text = self.parent.formatLine.split('$LINE')[0] + line + self.parent.formatLine.split('$LINE')[1]
self.parent.label_custom.setText(text)
self.parent.layout.addItem(self.parent.label_custom)
if not confAccept:
self.parent.layout.setContentsMargins(1, 1, 1, 1)
self.parent.applet.setLayout(self.parent.layout)
self.parent.theme = Plasma.Svg(self.parent)
self.parent.theme.setImagePath("widgets/background")
self.parent.setBackgroundHints(Plasma.Applet.DefaultBackground)
self.parent.resize(10, 10) self.parent.resize(10, 10)
# create dataengines # create dataengines
self.parent.thread().wait(60000) self.parent.thread().wait(60000)
self.parent.dataengine.connectToEngine() self.parent.connectToEngine()
self.parent.timer.setInterval(self.parent.interval) self.parent.timer.setInterval(self.parent.interval)
self.parent.startPolling() self.parent.startPolling()

View File

@ -34,7 +34,7 @@ class Util():
try: try:
os.mkdir(name) os.mkdir(name)
except: except:
print 'Failed to create directory: ' + name print ('Failed to create directory: ' + name)
def kdeHome(self): def kdeHome(self):
@ -42,7 +42,7 @@ class Util():
def createNotifyrc(self): def createNotifyrc(self):
print '[%s] creating notifyrc' % (self.applet._name) print ('[%s] creating notifyrc' % (self.applet._name))
self.createDirectory(self.kdeHome() + 'share/apps/%s' % self.applet._name) self.createDirectory(self.kdeHome() + 'share/apps/%s' % self.applet._name)
source = self.applet.package().path() + 'contents/misc/%s.notifyrc' % self.applet._name source = self.applet.package().path() + 'contents/misc/%s.notifyrc' % self.applet._name