forked from TheBigW/DRC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MeasureQADlg.py
executable file
·102 lines (87 loc) · 3.9 KB
/
MeasureQADlg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# -*- coding: utf-8 -*-
import os
import subprocess
from enum import Enum
import DRCFileTool
import gi
from gi.repository import RB
from gi.repository import Gtk
from DependsWrapper import DependsWrapperImpl
class MeasureQARetVal(Enum):
Done = 0
Reject = 1
Proceed = 2
class MeasureQADlg():
def __init__(self, parent, genSweepFile, measSweepFile,
sweep_level):
self.uibuilder = Gtk.Builder()
self.uibuilder.add_from_file(
DependsWrapperImpl.find_plugin_file(parent, "DRCUI.glade"))
self.dlg = self.uibuilder.get_object("measureQualityDlg")
self.uibuilder.get_object("button_doneMeasQA").connect(
"clicked", self.on_button_doneMeasQA)
self.uibuilder.get_object("button_rejectMeasQA").connect(
"clicked", self.on_button_rejectMeasQA)
self.uibuilder.get_object("button_ProceedMeasQA").connect(
"clicked", self.on_button_ProceedMeasQA)
btnViewAudacity = self.uibuilder.get_object("buttonViewRecSweep")
btnViewAudacity.connect("clicked", self.on_viewRecSweep)
self.genSweepFile = genSweepFile
self.measSweepFile = measSweepFile
def evalData(self):
audioParams = DRCFileTool.LoadAudioFile(self.genSweepFile, 1)
self.setEvalData(audioParams, "labelInputSweepData")
audioParams = DRCFileTool.LoadAudioFile(self.measSweepFile, 1)
minMaxRec = self.setEvalData(audioParams,
"labelRecordedSweepData")
audioParams = DRCFileTool.LoadAudioFile(self.impRespFile, 1)
self.setEvalData(audioParams, "labelImpResponseData")
# TODO: add evaluation
label = self.uibuilder.get_object("labelRecomendationResult")
result = "check values : recorded results seem to be fine to proceed"
if (minMaxRec[1] - minMaxRec[0]) < 0.1:
result = "check values : recorded volume seems to be quite low: " \
"check proper input device or adjust gain"
label.set_text(result)
def on_viewRecSweep(self, param):
scriptName = "audacity"
measSweepWaveFile = os.path.splitext(self.measSweepFile)[0] + ".wav"
commandLine = [scriptName, measSweepWaveFile]
subprocess.Popen(commandLine)
def setEvalData(self, dataInfo, labelID):
label = self.uibuilder.get_object(labelID)
text = "Min/Pos: " + str(dataInfo.minSampleValue) + "/" + \
str(dataInfo.minSampleValuePos) + \
" Max/Pos: " + str(dataInfo.maxSampleValue) + "/" + \
str(dataInfo.maxSampleValuePos)
label.set_text(text)
return [dataInfo.minSampleValue[0], dataInfo.maxSampleValue[0]]
def setImpRespFileName(self, impRespFile):
self.impRespFile = impRespFile
self.uibuilder.get_object("entryImpRespFileName").set_text(
self.impRespFile)
def on_button_doneMeasQA(self, param):
self.Result = MeasureQARetVal.Done
self.dlg.response(Gtk.ResponseType.OK)
self.dlg.set_visible(False)
def on_button_rejectMeasQA(self, param):
self.Result = MeasureQARetVal.Reject
os.remove(self.impRespFile)
self.dlg.response(Gtk.ResponseType.OK)
self.dlg.set_visible(False)
def on_button_ProceedMeasQA(self, param):
self.Result = MeasureQARetVal.Proceed
self.dlg.response(Gtk.ResponseType.OK)
self.dlg.set_visible(False)
def run(self):
print("running dlg...")
self.evalData()
retVal = self.dlg.run()
impRespFileName = self.uibuilder.get_object(
"entryImpRespFileName").get_text()
#TODO file hanlding specific on return code
if impRespFileName != self.impRespFile:
os.rename(self.impRespFile, impRespFileName)
self.impRespFile = impRespFileName
print(("returning : " + str(retVal) + "result: ", self.Result))
return retVal