#!/usr/bin/env python3
# coding=utf-8
import configparser
import sys
import subprocess
from PyQt5.QtWidgets import QWidget, QMessageBox

class Config:
    def __init__(self, file):
        class MyConfig(configparser.ConfigParser):
            def __init__(self):
                configparser.ConfigParser.__init__(self, defaults=None)

            def optionxform(self, optionstr):
                return optionstr

        self.config = MyConfig()
        self.file = file
        try:
            self.config.read(file, encoding='UTF-8')
        except Exception as e:
            QMessageBox.critical(QWidget(), 'Critical', repr(e))
            subprocess.run(["open", file])
            sys.exit(1)

    def get_items(self, section):
        try:
            return self.config[section].items()
        except Exception as e:
            QMessageBox.critical(QWidget(), 'Critical', repr(e) + ' in file: ' + self.file)
            subprocess.run(["open", self.file])
            sys.exit(1)

    def get(self, section, key, fallback = None):
        return self.config[section].get(key, fallback)

    def write(self, section, key, value):
        self.config.set(section, key, value)
        with open(self.file, 'w+', encoding='UTF-8') as f:
            self.config.write(f)