Skip to content

Commit

Permalink
Add tracking and display of peaks of values #49
Browse files Browse the repository at this point in the history
Merge pull request #50 from ArtificialQualia/dev
  • Loading branch information
ArtificialQualia committed Mar 12, 2019
2 parents 315a5c5 + cf580ba commit 713705f
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 29 deletions.
15 changes: 6 additions & 9 deletions PyEveLiveDPS/animate.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,8 @@ def animate(self):
# pass the values to the graph and other handlers
if not items["labelOnly"] and not self.graphDisabled:
self.graph.animateLine(items["yValues"], items["settings"], items["lines"], zorder=items["zorder"])
self.labelHandler.updateLabel(category, average, matplotlib.colors.to_hex(items["lines"][-1].get_color()))
else:
color = self.findColor(category, average)
self.labelHandler.updateLabel(category, average, color)
color = self.findColor(category, average)
self.labelHandler.updateLabel(category, average, color)
self.detailsHandler.updateDetails(category, items["historicalDetails"])

# Find highest average for the y-axis scaling
Expand Down Expand Up @@ -204,21 +202,20 @@ def changeSettings(self):
for category, items in self.categories.items():
if items["settings"]:
self.labelHandler.enableLabel(category, True)
showPeak = items["settings"][0].get("showPeak", False)
self.labelHandler.enablePeak(category, showPeak)
self.detailsHandler.enableLabel(category, True)
items["historical"] = [0] * int((self.seconds*1000)/self.interval)
items["historicalDetails"] = [[]] * int((self.seconds*1000)/self.interval)
items["yValues"] = np.array([0] * int((self.seconds*1000)/self.interval))
try:
items["labelOnly"] = items["settings"][0]["labelOnly"]
except KeyError:
items["settings"][0]["labelOnly"] = False
items["labelOnly"] = items["settings"][0]["labelOnly"]
items["labelOnly"] = items["settings"][0].get("labelOnly", False)
if not items["labelOnly"]:
ySmooth = self.graph.smoothListGaussian(items["yValues"], 5)
plotLine, = self.graph.subplot.plot(ySmooth, zorder=items["zorder"])
items["lines"] = [plotLine]
else:
self.labelHandler.enableLabel(category, False)
self.labelHandler.enablePeak(category, False)
self.detailsHandler.enableLabel(category, False)

if not self.graphDisabled:
Expand Down
43 changes: 36 additions & 7 deletions PyEveLiveDPS/labelHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def initializeLabels(self):
column = self.labelSettings[index]["column"] + 10
else:
column = self.labelSettings[index]["column"]
self.labels[index]["label"].grid(row=self.labelSettings[index]["row"], column=column)
self.labels[index]["label"].grid(row=self.labelSettings[index]["row"], column=column, sticky="n")
self.labels[index]["label"].grid_remove()

self.makeAllChildrenDraggable(self)
Expand All @@ -49,6 +49,9 @@ def enableLabel(self, labelName="", enable=True):
self.labels[labelName]["label"].grid()
else:
self.labels[labelName]["label"].grid_remove()

def enablePeak(self, labelName="", enable=True):
self.labels[labelName]["label"].enablePeak(enable)

def updateLabel(self, labelName, number, color):
self.labels[labelName]["label"].updateLabel(number, color)
Expand All @@ -61,19 +64,45 @@ def __init__(self, parent, text, settings, **kwargs):
self.columnconfigure(0, weight="1")
self.columnconfigure(3, weight="1")

tk.Frame(self, width="1", height="1", background="black").grid(row="0", column="0")
tk.Frame(self, width="1", height="1", background="black").grid(row="0", column="3")
tk.Frame(self, width="1", height="1", background="black").grid(row="0", column="0", rowspan="2", sticky="n")
tk.Frame(self, width="1", height="1", background="black").grid(row="0", column="3", rowspan="2", sticky="n")

tk.Label(self, text=text, fg="white", background="black").grid(row="0", column="1")
self.numberLabel = tk.Label(self, text="0.0", fg="white", background="black")
self.numberLabel.grid(row="0", column="2")

def updateLabel(self, number, color):

self.showPeak = False
self.peakValue = 0.0
self.peakLabel = tk.Label(self, text="Peak:", fg="white", background="black")
self.peakLabel.grid(row="1", column="1")
self.peakLabel.grid_remove()
self.peakNumberLabel = tk.Label(self, text="0.0", fg="white", background="black")
self.peakNumberLabel.grid(row="1", column="2")
self.peakNumberLabel.grid_remove()

def enablePeak(self, enable=True):
self.showPeak = enable
if enable:
self.peakLabel.grid()
self.peakNumberLabel.grid()
else:
self.peakLabel.grid_remove()
self.peakNumberLabel.grid_remove()


def convertNumberToStr(self, number):
decimals = int(self.decimalPlaces)
if self.inThousands:
number = number/1000
self.numberLabel["text"] = ('%.'+str(decimals)+'f') % (round(number, decimals),) + "K"
return ('%.'+str(decimals)+'f') % (round(number, decimals),) + "K"
else:
self.numberLabel["text"] = ('%.'+str(decimals)+'f') % (round(number, decimals),)
return ('%.'+str(decimals)+'f') % (round(number, decimals),)

def updateLabel(self, number, color):
self.numberLabel["text"] = self.convertNumberToStr(number)
self.numberLabel.configure(fg=color)
if self.showPeak and number >= self.peakValue:
self.peakValue = number
self.peakNumberLabel["text"] = self.convertNumberToStr(number)
self.peakNumberLabel.configure(fg=color)

30 changes: 19 additions & 11 deletions PyEveLiveDPS/settings/lineSettingsFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,37 +97,40 @@ def addLineSection(self, frame, text, settingsList, mining=False):
frame.columnconfigure(1, weight=1)
innerFrame = tk.Frame(frame, borderwidth=1, relief="sunken", padx="5")
innerFrame.columnconfigure(0, weight=1)
innerFrame.grid(row="2", column="0", columnspan="2", sticky="we")
innerFrame.grid(row="2", column="0", columnspan="3", sticky="we")
lineCheckboxValue = tk.BooleanVar()
lineCheckbox = tk.Checkbutton(frame, variable=lineCheckboxValue, text="Only show label", state="disabled")
lineCheckbox.grid(row="0", column="1", sticky="e")
lineCheckbox.grid(row="0", column="2", sticky="w")
lineCheckbox.var = lineCheckboxValue
peakCheckboxValue = tk.BooleanVar()
peakCheckbox = tk.Checkbutton(frame, variable=peakCheckboxValue, text="Show peak value", state="disabled")
peakCheckbox.grid(row="1", column="2", sticky="e")
peakCheckbox.var = peakCheckboxValue
if mining:
m3CheckboxValue = tk.BooleanVar()
m3Checkbox = tk.Checkbutton(frame, variable=m3CheckboxValue, text="Show m3 mined instead of units", state="disabled")
m3Checkbox.grid(row="1", column="0", columnspan="2")
m3Checkbox.grid(row="1", column="0", columnspan="2", sticky="w")
m3Checkbox.var = m3CheckboxValue
else: m3Checkbox = None
checkboxValue = tk.BooleanVar()
if len(settingsList) == 0:
checkboxValue.set(False)
else:
checkboxValue.set(True)
try:
lineCheckboxValue.set(settingsList[0]["labelOnly"])
if mining: m3CheckboxValue.set(settingsList[0]["showM3"])
except KeyError:
pass
self.addLineCustomizationSection(innerFrame, text, checkboxValue, lineCheckbox, settingsList, m3Checkbox)
lineCheckboxValue.set(settingsList[0].get("labelOnly", False))
peakCheckboxValue.set(settingsList[0].get("showPeak", False))
if mining: m3CheckboxValue.set(settingsList[0].get("showM3", False))
self.addLineCustomizationSection(innerFrame, text, checkboxValue, lineCheckbox, peakCheckbox, settingsList, m3Checkbox)
sectionCheckbox = tk.Checkbutton(frame, variable=checkboxValue, text=text + " tracking",
command=lambda:self.addLineCustomizationSection(innerFrame, text, checkboxValue, lineCheckbox, settingsList, m3Checkbox))
command=lambda:self.addLineCustomizationSection(innerFrame, text, checkboxValue, lineCheckbox,
peakCheckbox, settingsList, m3Checkbox))
font = tkFont.Font(font=sectionCheckbox['font'])
font.config(weight='bold')
sectionCheckbox['font'] = font
sectionCheckbox.grid(row="0", column="0", sticky="w")
tk.Frame(frame, height="20", width="10").grid(row="1000", column="1", columnspan="5")

def addLineCustomizationSection(self, frame, text, checkboxValue, lineCheckbox, settingsList, m3Checkbox):
def addLineCustomizationSection(self, frame, text, checkboxValue, lineCheckbox, peakCheckbox, settingsList, m3Checkbox):
if checkboxValue.get():
frame.grid()
innerLabel = tk.Label(frame, text="Color and threshold (when to change colors) for this line:")
Expand All @@ -146,6 +149,8 @@ def addLineCustomizationSection(self, frame, text, checkboxValue, lineCheckbox,
self.expandCustomizationSettings(innerFrame, settingsList)
lineCheckbox.configure(state="normal")
settingsList[0].update({ "labelOnly": lineCheckbox.var })
peakCheckbox.configure(state="normal")
settingsList[0].update({ "showPeak": peakCheckbox.var })
if m3Checkbox:
m3Checkbox.configure(state="normal")
settingsList[0].update({ "showM3": m3Checkbox.var })
Expand All @@ -156,6 +161,8 @@ def addLineCustomizationSection(self, frame, text, checkboxValue, lineCheckbox,
settingsList.clear()
lineCheckbox.var.set(0)
lineCheckbox.configure(state="disabled")
peakCheckbox.var.set(0)
peakCheckbox.configure(state="disabled")
if m3Checkbox:
m3Checkbox.var.set(0)
m3Checkbox.configure(state="disabled")
Expand Down Expand Up @@ -233,6 +240,7 @@ def doSettings(self):
for name, settings in self.settingsCopy.items():
if len(settings) > 0:
settings[0]["labelOnly"] = settings[0]["labelOnly"].get()
settings[0]["showPeak"] = settings[0]["showPeak"].get()

if len(self.settingsCopy["mining"]) > 0:
self.settingsCopy["mining"][0]["showM3"] = self.settingsCopy["mining"][0]["showM3"].get()
Expand Down
4 changes: 2 additions & 2 deletions PyEveLiveDPS/settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class Settings(FileSystemEventHandler):
"compactTransparency": 65,
"seconds": 10, "interval": 100,
"graphDisabled": 0,
"dpsIn": [{"color": "#FF0000", "transitionValue": 0, "labelOnly": 0}],
"dpsOut": [{"color": "#00FFFF", "transitionValue": 0, "labelOnly": 0}],
"dpsIn": [{"color": "#FF0000", "transitionValue": 0, "labelOnly": 0, "showPeak": 0}],
"dpsOut": [{"color": "#00FFFF", "transitionValue": 0, "labelOnly": 0, "showPeak": 0}],
"logiOut": [], "logiIn": [],
"capTransfered": [], "capRecieved": [],
"capDamageOut": [], "capDamageIn": [],
Expand Down

0 comments on commit 713705f

Please sign in to comment.