openwebrx-clone/owrx/config.py

55 lines
1.7 KiB
Python

import os
class Property(object):
def __init__(self, value = None):
self.value = value
self.callbacks = []
def getValue(self):
return self.value
def setValue(self, value):
self.value = value
for c in self.callbacks:
c(self.value)
return self
def wire(self, callback):
self.callbacks.append(callback)
if not self.value is None: callback(self.value)
return self
class PropertyManager(object):
sharedInstance = None
@staticmethod
def getSharedInstance():
if PropertyManager.sharedInstance is None:
PropertyManager.sharedInstance = PropertyManager()
return PropertyManager.sharedInstance
def __init__(self):
self.properties = {}
def getProperty(self, name):
if not name in self.properties:
self.properties[name] = Property()
return self.properties[name]
def getPropertyValue(self, name):
return self.getProperty(name).getValue()
class RequirementMissingException(Exception):
pass
class FeatureDetector(object):
def detectAllFeatures(self):
print("Starting Feature detection")
self.detect_csdr()
self.detect_nmux()
print("Feature detection completed.")
def detect_csdr(self):
if os.system("csdr 2> /dev/null") == 32512: #check for csdr
raise RequirementMissingException("You need to install \"csdr\" to run OpenWebRX!")
def detect_nmux(self):
if os.system("nmux --help 2> /dev/null") == 32512: #check for nmux
raise RequirementMissingException("You need to install an up-to-date version of \"csdr\" that contains the \"nmux\" tool to run OpenWebRX! Please upgrade \"csdr\"!")