Exemple #1
0
class NewGame(AnchorLayout):
    app = ObjectProperty(None)
    config = ObjectProperty(None)
    settings = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(NewGame, self).__init__(**kwargs)
        self.config = ConfigParser()
        self.config.read(tttraders_user_conf('tttraders.ini'))

        self.settings.register_type("int", TTSettingInt)

        for tab in TradersGame.ConfigTabs:
            lst  = TradersGame.Config[tab]
            for c in lst:
                if c.get("key", None):
                    self.config.adddefaultsection(c['section'])
                    self.config.setdefault(c['section'], c['key'], c.get("default", None))
            self.settings.add_json_panel(tab, self.config, data=json.dumps(lst))
Exemple #2
0
def get_config():

    config = ConfigParser()
    config.read('config.ini')
    
    config.adddefaultsection('game')
    config.setdefault('game', 'outside_coordinates', True)
    config.setdefault('game', 'show_pieces', True)
    config.setdefault('game', 'square_coordinates', False)

    

    return config
Exemple #3
0
from kivy.app import App
from kivy.properties import StringProperty
from kivy.lang import Builder
import csv
import os
import json


app = App.get_running_app()
from kivy.config import ConfigParser

config = ConfigParser()
config.read('myconfig.ini')

config.adddefaultsection('pycon2018')
config.setdefault('pycon2018', 'register_data_dir', 'data')


class ScreenRegister(Factory.Screen):

    _data = {}
    '''Holds the data in :attr:`data_file_dir` was processed or not.
    :attr:`_data` is a :type:`String`, defaults to False.
    '''

    data_file_dir = StringProperty(config.get(
        'pycon2018', 'register_data_dir'))
    '''This is the data dir where the registeration data is stored.
    All csv files should be present in this folder.

    :attr:`data_file_dir` is a :class:`~kivy.properties.StringProperty`
Exemple #4
0
class UserPrefs(EventDispatcher):
    '''
    A class to manage user preferences for the RaceCapture app
    '''
    DEFAULT_DASHBOARD_SCREENS = ['5x_gauge_view', 'laptime_view', 'tach_view', 'rawchannel_view']
    DEFAULT_PREFS_DICT = {'range_alerts': {},
                          'gauge_settings':{},
                          'screens':DEFAULT_DASHBOARD_SCREENS,
                          'alerts': {}}

    DEFAULT_ANALYSIS_CHANNELS = ['Speed']

    prefs_file_name = 'prefs.json'

    def __init__(self, data_dir, user_files_dir, save_timeout=0.2, **kwargs):
        self._prefs_dict = UserPrefs.DEFAULT_PREFS_DICT
        self.config = ConfigParser()
        self.data_dir = data_dir
        self.user_files_dir = user_files_dir
        self.prefs_file = path.join(self.data_dir, self.prefs_file_name)
        self.register_event_type("on_pref_change")
        self.load()

    def on_pref_change(self, section, option, value):
        pass

    def set_range_alert(self, key, range_alert):
        '''
        Sets a range alert with the specified key
        :param key the key for the range alert
        :type string
        :param range_alert the range alert
        :type object
        '''
        self._prefs_dict["range_alerts"][key] = range_alert
        self.save()

    def get_range_alert(self, key, default=None):
        '''
        Retrives a range alert for the specified key
        :param key the key for the range alert
        :type key string
        :param default the default value, optional
        :type default user specified
        :return the range alert, or the default value 
        '''
        return self._prefs_dict["range_alerts"].get(key, default)


    def get_alertrules(self, channel):
        '''
        Retrieve the alert_rules for the specified channel. If the
        alertrules do not exist for the specified channel, return an empty
        default AlertRuleCollection
        :return AlertRuleCollection
        '''
        alertrules = self._prefs_dict['alerts'].get(channel)
        if alertrules is None:
            alertrules = AlertRuleCollection(channel, [])
            self._prefs_dict['alerts'][channel] = alertrules

        return alertrules

    def set_alertrules(self, channel, alertrules):
        self._prefs_dict['alerts'][channel] = alertrules
        self.save()

    def set_gauge_config(self, gauge_id, config_value):
        '''
        Stores a gauge configuration for the specified gauge_id
        :param gauge_id the key for the gauge
        :type gauge_id string
        :param config_value the configuration value to set
        :type config_value string
        '''
        self._prefs_dict["gauge_settings"][gauge_id] = config_value
        self.save()

    def get_gauge_config(self, gauge_id):
        '''
        Get the gauge configuration for the specified gauge_id
        :param gauge_id the key for the gauge
        :type string
        :return the gauge configuration
        '''
        return self._prefs_dict["gauge_settings"].get(gauge_id, False)

    def get_dashboard_screens(self):
        return copy(self._prefs_dict['screens'])

    def set_dashboard_screens(self, screens):
        self._prefs_dict['screens'] = copy(screens)
        self.save()

# Regular preferences below here

    def get_last_selected_track_id(self):
        return self.get_pref('track_detection', 'last_selected_track_id')

    def get_last_selected_track_timestamp(self):
        return self.get_pref_int('track_detection', 'last_selected_track_timestamp')

    def get_user_cancelled_location(self):
        return self.get_pref('track_detection', 'user_cancelled_location')

    def set_last_selected_track(self, track_id, timestamp, user_cancelled_location='0,0'):
        self.set_pref('track_detection', 'last_selected_track_id', track_id)
        self.set_pref('track_detection', 'last_selected_track_timestamp', timestamp)
        self.set_pref('track_detection', 'user_cancelled_location', user_cancelled_location)
        self.save()

    @property
    def datastore_location(self):
        return os.path.join(self.data_dir, 'datastore.sq3')

    def save(self, *largs):
        '''
        Saves the current configuration
        '''
        Logger.info('UserPrefs: Saving preferences')
        with open(self.prefs_file, 'w+') as prefs_file:
            data = self.to_json()
            prefs_file.write(data)

    def set_config_defaults(self):
        '''
        Set defaults for preferences 
        '''
        # Base system preferences
        self.config.adddefaultsection('help')
        self.config.adddefaultsection('preferences')
        self.config.setdefault('preferences', 'distance_units', 'miles')
        self.config.setdefault('preferences', 'temperature_units', 'Fahrenheit')
        self.config.setdefault('preferences', 'show_laptimes', 1)
        self.config.setdefault('preferences', 'startup_screen', 'Home Page')
        default_user_files_dir = self.user_files_dir
        self.config.setdefault('preferences', 'config_file_dir', default_user_files_dir)
        self.config.setdefault('preferences', 'export_file_dir', default_user_files_dir)
        self.config.setdefault('preferences', 'firmware_dir', default_user_files_dir)
        self.config.setdefault('preferences', 'import_datalog_dir', default_user_files_dir)
        self.config.setdefault('preferences', 'send_telemetry', '0')
        self.config.setdefault('preferences', 'record_session', '1')
        self.config.setdefault('preferences', 'global_help', True)

        # Connection type for mobile
        if is_mobile_platform():
            if is_android():
                self.config.setdefault('preferences', 'conn_type', 'Bluetooth')
            elif is_ios():
                self.config.setdefault('preferences', 'conn_type', 'WiFi')
        else:
            self.config.setdefault('preferences', 'conn_type', 'Serial')

        # Dashboard preferences
        self.config.adddefaultsection('dashboard_preferences')
        self.config.setdefault('dashboard_preferences', 'last_dash_screen', '5x_gauge_view')
        self.config.setdefault('dashboard_preferences', 'pitstoptimer_enabled', 1)
        self.config.setdefault('dashboard_preferences', 'pitstoptimer_trigger_speed', 5)
        self.config.setdefault('dashboard_preferences', 'pitstoptimer_alert_speed', 25)
        self.config.setdefault('dashboard_preferences', 'pitstoptimer_exit_speed', 55)

        # Track detection pref
        self.config.adddefaultsection('track_detection')
        self.config.setdefault('track_detection', 'last_selected_track_id', 0)
        self.config.setdefault('track_detection', 'last_selected_track_timestamp', 0)
        self.config.setdefault('track_detection', 'user_cancelled_location', '0,0')

        self.config.adddefaultsection('analysis_preferences')
        self.config.setdefault('analysis_preferences', 'selected_sessions_laps', '{"sessions":{}}')
        self.config.setdefault('analysis_preferences', 'selected_analysis_channels', ','.join(UserPrefs.DEFAULT_ANALYSIS_CHANNELS))

        self.config.adddefaultsection('setup')
        self.config.setdefault('setup', 'setup_enabled', 1)

    def load(self):
        Logger.info('UserPrefs: Data Dir is: {}'.format(self.data_dir))
        self.config.read(os.path.join(self.data_dir, 'preferences.ini'))
        self.set_config_defaults()

        try:
            with open(self.prefs_file, 'r') as data:
                content = data.read()
                content_dict = json.loads(content)

                if content_dict.has_key("gauge_settings"):
                    for id, channel in content_dict["gauge_settings"].iteritems():
                        self._prefs_dict["gauge_settings"][id] = channel

                if content_dict.has_key('screens'):
                    self._prefs_dict['screens'] = content_dict['screens']

                if content_dict.has_key('alerts'):
                    for channel, alertrules in content_dict['alerts'].iteritems():
                        self._prefs_dict['alerts'][channel] = AlertRuleCollection.from_dict(alertrules)

        except Exception as e:
            Logger.error('Error loading preferences, using defaults. {}'.format(e))

    def init_pref_section(self, section):
        '''
        Initializes a preferences section with the specified name. 
        if the section already exists, there is no effect. 
        :param section the name of the preference section
        :type string
        '''
        self.config.adddefaultsection(section)

    def get_pref_bool(self, section, option, default=None):
        '''
        Retrieve a preferences value as a bool. 
        return default value if preference does not exist
        :param section the configuration section for the preference
        :type section string
        :param option the option for the section
        :type option string
        :param default
        :type default bool
        :return bool preference value
        '''
        try:
            return self.config.getboolean(section, option)
        except (NoOptionError, ValueError):
            return default

    def get_pref_float(self, section, option, default=None):
        '''
        Retrieve a preferences value as a float. 
        return default value if preference does not exist
        :param section the configuration section for the preference
        :type section string
        :param option the option for the section
        :type option string
        :param default
        :type default float
        :return float preference value
        '''
        try:
            return self.config.getfloat(section, option)
        except (NoOptionError, ValueError):
            return default

    def get_pref_int(self, section, option, default=None):
        '''
        Retrieve a preferences value as an int. 
        return default value if preference does not exist
        :param section the configuration section for the preference
        :type section string
        :param option the option for the section
        :type option string
        :param default
        :type default user specified
        :return int preference value
        '''
        try:
            return self.config.getint(section, option)
        except (NoOptionError, ValueError):
            return default

    def get_pref(self, section, option, default=None):
        '''
        Retrieve a preferences value as a string. 
        return default value if preference does not exist
        :param section the configuration section for the preference
        :type section string
        :param option the option for the section
        :type option string
        :param default
        :type default user specified
        :return string preference value
        '''
        try:
            return self.config.get(section, option)
        except (NoOptionError, ValueError):
            return default

    def get_pref_list(self, section, option, default=[]):
        """
        Retrieve a preferences value as a list. 
        return default value if preference does not exist
        :param section the configuration section for the preference
        :type section string
        :param option the option for the section
        :type option string
        :param default
        :type default user specified
        :return list of string values
        """
        try:
            return self.config.get(section, option).split(',')
        except (NoOptionError, ValueError):
            return default

    def set_pref(self, section, option, value):
        '''
        Set a preference value
        :param section the configuration section for the preference
        :type string
        :param option the option for the section
        :type string
        :param value the preference value to set
        :type value user specified
        '''
        current_value = None
        try:
            current_value = self.config.get(section, option)
        except NoOptionError:
            pass
        self.config.set(section, option, value)
        self.config.write()
        if value != current_value:
            self.dispatch('on_pref_change', section, option, value)

    def set_pref_list(self, section, option, value):
        """
        Set a preference value by list
        :param section the configuration section for the preference
        :type string
        :param option the option for the section
        :type string
        :param value the preference value to set
        :type value list (list of strings)
        """
        try:
            self.set_pref(section, option, ','.join(value))
        except TypeError:
            Logger.error('UserPrefs: failed to set preference list for {}:{} - {}'.format(section, option, value))

    def to_json(self):
        '''
        Serialize preferences to json
        '''
        data = {'range_alerts': {}, 'gauge_settings':{}, 'screens': [], 'alerts': {}}

        for name, range_alert in self._prefs_dict["range_alerts"].iteritems():
            data["range_alerts"][name] = range_alert.to_dict()

        for id, channel in self._prefs_dict["gauge_settings"].iteritems():
            data["gauge_settings"][id] = channel

        for name, alertrules in self._prefs_dict['alerts'].iteritems():
            data['alerts'][name] = alertrules.to_dict()

        data['screens'] = self._prefs_dict['screens']

        return json.dumps(data, sort_keys=True, indent=2, separators=(',', ': '))
Exemple #5
0
class mainApp(App):
    def build(self):
        Window.clearcolor = (228. / 255., 228. / 255., 228. / 255., 1)
        self.title = "GrunwaldCalc"

        Window.minimum_width = 300
        Window.minimum_height = 200

        self.config = ConfigParser()
        self.config.read("config.ini")
        self.config.adddefaultsection("Settings")

        self.config.setdefault("Settings", "Language",
                               locale.getdefaultlocale()[0])
        self.language = self.config.getdefault("Settings", "Language",
                                               locale.getdefaultlocale()[0])
        self.settings = Settings()
        self.day_calc = DayCalc.Calculate()
        self.date_finder = DateFinder.WikiScrape()
        self.day_calc.changeLanguage(self.language)
        self.date_finder.changeLanguage(self.language)
        self.container = BoxLayout(orientation="vertical")
        self.search_layout = BoxLayout(orientation="horizontal",
                                       size_hint=(1, 0.25),
                                       height=100)
        self.results_layout = AnchorLayout(anchor_y="top")
        self.container.add_widget(self.search_layout)
        self.container.add_widget(self.results_layout)

        try:
            with open("./languages/" + self.language + ".lang",
                      encoding="UTF-8") as language_file:
                self.language_file = json.load(language_file)
        except FileNotFoundError:
            self.language = "en_US"
            with open("./languages/" + self.language + ".lang",
                      encoding="UTF-8") as language_file:
                self.language_file = json.load(language_file)

        self.search_box = TextInput(hint_text=(self.language_file["hint"]),
                                    size_hint=(0.7, None),
                                    height=50,
                                    multiline=False)
        self.search_button = Button(text=self.language_file["button-text"],
                                    size_hint=(0.3, None),
                                    height=50)
        self.search_layout.add_widget(self.search_box)
        self.search_layout.add_widget(self.search_button)

        self.search_box.bind(on_text_validate=self.start_main)
        self.search_button.bind(on_press=self.start_main)

        return self.container

    def start_main(self, instance):
        text_value = ''.join(char for char in self.search_box.text
                             if char.isnumeric())
        if 4 < len(text_value) < 9:
            self.results_layout.clear_widgets()
            self.date = self.day_calc.findWeekday(text_value)
            self.result_label = Label(
                text=self.language_file["single-date"].format(self.date),
                markup=True)
            self.results_layout.add_widget(self.result_label)
        else:
            self.results_layout.clear_widgets()
            try:
                self.event_dates = (self.date_finder.findEventDate(
                    self.search_box.text))

                self.event_weekdays = []
                for date in self.event_dates:
                    self.event_weekdays.append(
                        self.day_calc.findWeekday(self.event_dates[date]))
                if len(self.event_dates) == 2:
                    self.result_label = Label(
                        text=self.language_file["from-to-date"].format(
                            self.event_dates['from'], self.event_weekdays[0],
                            self.event_dates['to'], self.event_weekdays[1]),
                        markup=True,
                        size_hint=(1, None))
                    self.result_label.text_size = (self.results_layout.width -
                                                   40,
                                                   self.results_layout.height)

                    self.results_layout.add_widget(self.result_label)
                else:
                    self.result_label = Label(
                        text=self.language_file["from-to-date"].format(
                            self.event_dates['date'], self.event_weekdays[0]),
                        markup=True,
                        size_hint=(1, None))
                    self.result_label.text_size = (self.results_layout.width -
                                                   40,
                                                   self.results_layout.height)

                    self.results_layout.add_widget(self.result_label)
            except LookupError:
                self.result_label = Label(
                    text=self.language_file["lookup-error"], markup=True)
                self.results_layout.add_widget(self.result_label)
Exemple #6
0
class Settings:
    def __init__(self):
        self.Config = ConfigParser()
        self.Config.add_section('Input')
        self.Config.add_section('Processor')
        self.Config.add_section('Output')
        # default values
        self.cfgfilename = 'default.conf'
        self.helpfile = 'doc/PyFSPro_dataflow.jpg'
        self.numframes = 255  # No. of frames in stack
        self.color_mode = -1  # Greyscale output
        self.video_src = 0  # Default camera
        self.video_width = 1024
        self.video_height = 768
        self.show_inp = True
        self.show_out = True
        self.show_vec = False
        self.show_help = False

        # settings for video and image sequence recording
        self.recordi = False
        self.recordv = False
        self.novfile = True
        self.imgindx = 0
        self.output_path = './output/'
        self.image_dst = self.output_path
        self.video_dst = self.output_path

        # switches for image filters and tools
        self.blr_inp = False
        self.blr_out = False
        self.blr_strength = 7
        self.equ_inp = 0
        self.equ_out = 0
        self.dnz_inp = False
        self.dnz_out = False
        self.dnz_inp_str = 33
        self.dnz_out_str = 33
        self.flt_inp = 0
        self.flt_out = 0
        self.flt_inp_strength = 0
        self.flt_out_strength = 0
        self.flt_inp_kernel = None
        self.flt_out_kernel = None
        self.flip_x = False
        self.flip_y = False
        self.inp_kernel = None
        self.out_kernel = None
        #self.mode_in = 0
        self.mode_prc = 0
        #self.mode_out = 0
        self.pseudoc = False
        self.dyn_dark = True
        self.gain_inp = 1.0
        self.gain_out = 1.0
        self.offset_inp = 0
        self.offset_out = 0
        self.vec_zoom = 0.1
        self.loop = False
        self.stb_inp = False
        self.stb_out = False
        self.osd_txtline = 2
        self.green = (0, 255, 0)
        self.red = (0, 0, 255)
        self.blue = (255, 0, 0)
        self.black = (0, 0, 0)
        self.colormaps = [
            'AUTUMN', 'BONE', 'JET', 'WINTER', 'RAINBOW', 'OCEAN', 'SUMMER',
            'SPRING', 'COOL', 'HSV', 'PINK', 'HOT'
        ]
        self.set_defaults()

    def gettime(self):
        self.timestring = time.strftime("%Y%m%d-%H%M%S", time.gmtime())
        return self.timestring

    def set_defaults(self):
        # Section 'Input'
        self.Config.setdefault('Input', 'video_src', self.video_src)
        self.Config.setdefault('Input', 'video_width', self.video_width)
        self.Config.setdefault('Input', 'video_height', self.video_height)
        self.Config.setdefault('Input', 'loop', self.loop)
        self.Config.setdefault('Input', 'flip_x', self.flip_x)
        self.Config.setdefault('Input', 'flip_y', self.flip_y)
        self.Config.setdefault('Input', 'blr_inp', self.blr_inp)
        self.Config.setdefault('Input', 'equ_inp', self.equ_inp)
        self.Config.setdefault('Input', 'dnz_inp', self.dnz_inp)
        self.Config.setdefault('Input', 'dnz_inp_str', self.dnz_inp_str)
        self.Config.setdefault('Input', 'flt_inp', self.flt_inp)
        self.Config.setdefault('Input', 'flt_inp_strength',
                               self.flt_inp_strength)
        #self.Config.setdefault('Input','mode_in', self.mode_in)
        self.Config.setdefault('Input', 'gain_inp', self.gain_inp)
        self.Config.setdefault('Input', 'offset_inp', self.offset_inp)
        self.Config.setdefault('Input', 'stb_inp', self.stb_inp)

        # Section 'Processor'
        self.Config.setdefault('Processor', 'mode_prc', self.mode_prc)
        self.Config.setdefault('Processor', 'dyn_dark', self.dyn_dark)
        self.Config.setdefault('Processor', 'blr_strength', self.blr_strength)
        self.Config.setdefault('Processor', 'numframes', self.numframes)

        # Section 'Output'
        self.Config.setdefault('Output', 'video_dst', self.video_dst)
        self.Config.setdefault('Output', 'image_dst', self.image_dst)
        self.Config.setdefault('Output', 'recordv', self.recordv)
        self.Config.setdefault('Output', 'recordi', self.recordi)
        self.Config.setdefault('Output', 'blr_out', self.blr_out)
        self.Config.setdefault('Output', 'equ_out', self.equ_out)
        self.Config.setdefault('Output', 'dnz_out', self.dnz_out)
        self.Config.setdefault('Output', 'dnz_out_str', self.dnz_out_str)
        self.Config.setdefault('Output', 'flt_out', self.flt_out)
        self.Config.setdefault('Output', 'flt_out_strength',
                               self.flt_out_strength)
        #self.Config.setdefault('Output','mode_out', self.mode_out)
        self.Config.setdefault('Output', 'gain_out', self.gain_out)
        self.Config.setdefault('Output', 'offset_out', self.offset_out)
        self.Config.setdefault('Output', 'color_mode', self.color_mode)
        self.Config.setdefault('Output', 'pseudoc', self.pseudoc)
        self.Config.setdefault('Output', 'vec_zoom', self.vec_zoom)
        self.Config.setdefault('Output', 'stb_out', self.stb_out)

    def write_config(self, filename):
        if filename is None:
            filename = self.cfgfilename
        self.cfgfile = open(filename, 'w')

        # Section 'Input'
        self.Config.set('Input', 'video_src', self.video_src)
        self.Config.set('Input', 'video_width', self.video_width)
        self.Config.set('Input', 'video_height', self.video_height)
        self.Config.set('Input', 'loop', self.loop)
        self.Config.set('Input', 'flip_x', self.flip_x)
        self.Config.set('Input', 'flip_y', self.flip_y)
        self.Config.set('Input', 'blr_inp', self.blr_inp)
        self.Config.set('Input', 'equ_inp', self.equ_inp)
        self.Config.set('Input', 'dnz_inp', self.dnz_inp)
        self.Config.set('Input', 'dnz_inp_str', self.dnz_inp_str)
        self.Config.set('Input', 'flt_inp', self.flt_inp)
        self.Config.set('Input', 'flt_inp_strength', self.flt_inp_strength)
        #self.Config.set('Input','mode_in', self.mode_in)
        self.Config.set('Input', 'gain_inp', self.gain_inp)
        self.Config.set('Input', 'offset_inp', self.offset_inp)
        self.Config.set('Input', 'stb_inp', self.stb_inp)

        # Section 'Processor'
        self.Config.set('Processor', 'mode_prc', self.mode_prc)
        self.Config.set('Processor', 'dyn_dark', self.dyn_dark)
        self.Config.set('Processor', 'blr_strength', self.blr_strength)
        self.Config.set('Processor', 'numframes', self.numframes)

        # Section 'Output'
        self.Config.set('Output', 'video_dst', self.video_dst)
        self.Config.set('Output', 'image_dst', self.image_dst)
        self.Config.set('Output', 'recordv', self.recordv)
        self.Config.set('Output', 'recordi', self.recordi)
        self.Config.set('Output', 'blr_out', self.blr_out)
        self.Config.set('Output', 'equ_out', self.equ_out)
        self.Config.set('Output', 'dnz_out', self.dnz_out)
        self.Config.set('Output', 'dnz_out_str', self.dnz_out_str)
        self.Config.set('Output', 'flt_out', self.flt_out)
        self.Config.set('Output', 'flt_out_strength', self.flt_out_strength)
        #self.Config.set('Output','mode_out', self.mode_out)
        self.Config.set('Output', 'gain_out', self.gain_out)
        self.Config.set('Output', 'offset_out', self.offset_out)
        self.Config.set('Output', 'color_mode', self.color_mode)
        self.Config.set('Output', 'pseudoc', self.pseudoc)
        self.Config.set('Output', 'vec_zoom', self.vec_zoom)
        self.Config.set('Output', 'stb_out', self.stb_out)

        self.Config.write(self.cfgfile)
        self.cfgfile.close()

    def read_config(self, filename):
        if os.path.isfile(filename):
            self.Config.read(filename)
            self.video_src = self.Config.get('Input', 'video_src')
            self.video_width = int(self.Config.get('Input', 'video_width'))
            self.video_height = int(self.Config.get('Input', 'video_height'))
            self.loop = self.Config.getboolean('Input', 'loop')
            self.flip_x = self.Config.getboolean('Input', 'flip_x')
            self.flip_y = self.Config.getboolean('Input', 'flip_y')
            self.blr_inp = self.Config.getboolean('Input', 'blr_inp')
            self.equ_inp = int(self.Config.get('Input', 'equ_inp'))
            self.dnz_inp = self.Config.getboolean('Input', 'dnz_inp')
            self.dnz_inp_str = float(self.Config.get('Input', 'dnz_inp_str'))
            self.flt_inp = int(self.Config.get('Input', 'flt_inp'))
            self.flt_inp_strength = float(
                self.Config.get('Input', 'flt_inp_strength'))
            self.gain_inp = float(self.Config.get('Input', 'gain_inp'))
            self.offset_inp = float(self.Config.get('Input', 'offset_inp'))
            self.stb_inp = self.Config.getboolean('Input', 'stb_inp')
            self.mode_prc = int(self.Config.get('Processor', 'mode_prc'))
            self.dyn_dark = self.Config.getboolean('Processor', 'dyn_dark')
            self.blr_strength = int(
                self.Config.get('Processor', 'blr_strength'))
            self.numframes = int(self.Config.get('Processor', 'numframes'))
            self.video_dst = self.Config.get('Output', 'video_dst')
            self.image_dst = self.Config.get('Output', 'image_dst')
            self.recordv = self.Config.getboolean('Output', 'recordv')
            self.recordi = self.Config.getboolean('Output', 'recordi')
            self.blr_out = self.Config.getboolean('Output', 'blr_out')
            self.equ_out = int(self.Config.get('Output', 'equ_out'))
            self.dnz_out = self.Config.getboolean('Output', 'dnz_out')
            self.dnz_out_str = float(self.Config.get('Output', 'dnz_out_str'))
            self.flt_out = int(self.Config.get('Output', 'flt_out'))
            self.flt_out_strength = float(
                self.Config.get('Output', 'flt_out_strength'))
            self.gain_out = float(self.Config.get('Output', 'gain_out'))
            self.offset_out = float(self.Config.get('Output', 'offset_out'))
            self.color_mode = int(self.Config.get('Output', 'color_mode'))
            self.pseudoc = self.Config.getboolean('Output', 'pseudoc')
            self.vec_zoom = float(self.Config.get('Output', 'vec_zoom'))
            self.stb_out = self.Config.getboolean('Output', 'stb_out')
        else:
            print('File ' + str(filename) + ' does not exist.')