• Pierre-Antoine Rouby's avatar
    Add configuration window and many minor change. · cb5ee1b9
    Pierre-Antoine Rouby authored
    * src/config.py: Application config class.
    * src/pamhyr.py: Add app config.
    * src/view/ASubWindow.py: Add some methods.
    * src/view/ConfigureWindow.py: New app sub window.
    * src/view/MainWindow.py: Minor change.
    * src/view/ui/ConfigureDialog.ui: New ui.
    * src/view/ui/MainWindow.ui: Start rename some component.
    * src/view/ui/MainWindow_old.ui: Old version of main UI.
    cb5ee1b9
Stricklers.py 2.68 KiB
# -*- coding: utf-8 -*-

from tools import trace, timer

from Model.DB import SQLSubModel

class Stricklers(SQLSubModel):
    def __init__(self, name:str = "",
                 comment:str = "",
                 minor:float = 35.0,
                 medium:float = 15.0,
                 status = None):
        super(Stricklers, self).__init__()

        self._status = status

        self._name = name
        self._comment = comment

        self._minor = minor
        self._medium = medium


    @classmethod
    def _sql_create(cls, execute):
        execute("""
          CREATE TABLE stricklers(
            id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
            name TEXT,
            comment TEXT,
            minor REAL NOT NULL,
            medium REAL NOT NULL
          )
        """)

        return cls._create_submodel(execute)

    @classmethod
    def _sql_update(cls, execute, version):
        return cls._update_submodel(execute, version)

    @classmethod
    def _sql_load(cls, execute, data = None):
        stricklers = []
        status = data["status"]

        table = execute(
            "SELECT name, comment, minor, medium " +
            "FROM stricklers"
        )

        for row in table:
            name = row[0]
            comment = row[1]
            minor = row[2]
            medium = row[3]

            new = cls(
                name = name,
                comment = comment,
                minor = minor, medium = medium,
                status = status
            )

            stricklers.append(new)

        return stricklers

    def _sql_save(self, execute, data = None):
        sql = (
            "INSERT INTO " +
            "stricklers(name, comment, minor, medium) "+
            "VALUES (" +
            f"'{self._sql_format(self.name)}', " +
            f"'{self._sql_format(self.comment)}', " +
            f"{float(self.minor)}, {float(self.medium)}" +
            ")"
        )
        execute(sql)

        return True

    def __str__(self):
        if self._name != "":
            return f"{self._name} ({self._minor}, {self._medium})"

        return f"({self._minor}, {self._medium})"

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name

    @property
    def comment(self):
        return self._comment

    @comment.setter
    def comment(self, comment):
        self._comment = comment

    @property
    def minor(self):
        return self._minor

    @minor.setter
    def minor(self, minor):
        self._minor = int(minor)

    @property
    def medium(self):
        return self._medium

    @medium.setter
    def medium(self, medium):
        self._medium = int(medium)