diff --git a/src/Checker/Checker.py b/src/Checker/Checker.py index 762db1c629aadbd75fbae6b72ec719d2749fd680..e97e0b0414cfdbd749eae8fe2433cb9dfe06f992 100644 --- a/src/Checker/Checker.py +++ b/src/Checker/Checker.py @@ -20,12 +20,14 @@ from enum import Enum from Model.Except import NotImplementedMethodeError + class STATUS(Enum): UNKNOWN = -1 OK = 0 WARNING = 1 ERROR = 2 + class AbstractModelChecker(object): def __init__(self): self._name = "" diff --git a/src/Checker/Mage.py b/src/Checker/Mage.py index edb0c349a685408d8243309a8a06ad3549206550..d5b527fa053bb6aa2d59d3ed1ec6bba84845689d 100644 --- a/src/Checker/Mage.py +++ b/src/Checker/Mage.py @@ -27,8 +27,9 @@ from Checker.Checker import AbstractModelChecker, STATUS _translate = QCoreApplication.translate + class MageNetworkGraphChecker(AbstractModelChecker): - def __init__(self, connectivity = True): + def __init__(self, connectivity=True): super(MageNetworkGraphChecker, self).__init__() self._mode_conn = connectivity @@ -38,8 +39,10 @@ class MageNetworkGraphChecker(AbstractModelChecker): else: mode = "cycle" - self._name = _translate("Checker", f"Mage network graph {mode} checker") - self._description = _translate("Checker", "Check if the network graph is valid") + self._name = _translate( + "Checker", f"Mage network graph {mode} checker") + self._description = _translate( + "Checker", "Check if the network graph is valid") @timer def _connectivity(self, summary, status, graph): diff --git a/src/Checker/Study.py b/src/Checker/Study.py index 868ac1041bb8ebc2bf2d07b7f012d585b1b9effd..b5287e6f6877114982b18d7c5f3152b4bd9c6b46 100644 --- a/src/Checker/Study.py +++ b/src/Checker/Study.py @@ -30,7 +30,8 @@ class StudyNetworkReachChecker(AbstractModelChecker): super(StudyNetworkReachChecker, self).__init__() self._name = _translate("Checker", "Study network reach checker") - self._description = _translate("Checker", "Check if exists at least one reach for study") + self._description = _translate( + "Checker", "Check if exists at least one reach for study") def run(self, study): if study is None: @@ -54,12 +55,14 @@ class StudyNetworkReachChecker(AbstractModelChecker): self._status = STATUS.OK return True + class StudyGeometryChecker(AbstractModelChecker): def __init__(self): super(StudyGeometryChecker, self).__init__() self._name = _translate("Checker", "Study geometry checker") - self._description = _translate("Checker", "Check if exists geometry for each reach of study") + self._description = _translate( + "Checker", "Check if exists geometry for each reach of study") self._reachs = [] def run(self, study): @@ -128,6 +131,7 @@ class DummyWARNING(AbstractModelChecker): return True + class DummyERROR(AbstractModelChecker): def __init__(self): super(DummyERROR, self).__init__() diff --git a/src/Model/BoundaryCondition/BoundaryCondition.py b/src/Model/BoundaryCondition/BoundaryCondition.py index d90c64780d1651ac48ba21076dbdfc40ac1d786f..f7e09f3d61e9d18f92cc951a1860416b0a005a7a 100644 --- a/src/Model/BoundaryCondition/BoundaryCondition.py +++ b/src/Model/BoundaryCondition/BoundaryCondition.py @@ -25,12 +25,13 @@ from Model.Except import NotImplementedMethodeError logger = logging.getLogger() + class BoundaryCondition(SQLSubModel): _sub_classes = [] _id_cnt = 0 - def __init__(self, id:int = -1, name:str = "", - status = None): + def __init__(self, id: int = -1, name: str = "", + status=None): super(BoundaryCondition, self).__init__() self._status = status @@ -101,7 +102,7 @@ class BoundaryCondition(SQLSubModel): return res @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = [] tab = data["tab"] @@ -115,9 +116,9 @@ class BoundaryCondition(SQLSubModel): t = row[2] ctor = cls._get_ctor_from_type(t) bc = ctor( - id = row[0], - name = row[1], - status = data['status'] + id=row[0], + name=row[1], + status=data['status'] ) bc.node = None @@ -143,7 +144,7 @@ class BoundaryCondition(SQLSubModel): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): tab = data["tab"] execute(f"DELETE FROM boundary_condition WHERE id = {self.id}") @@ -155,7 +156,7 @@ class BoundaryCondition(SQLSubModel): sql = ( "INSERT INTO " + - "boundary_condition(id, name, type, tab, node) "+ + "boundary_condition(id, name, type, tab, node) " + "VALUES (" + f"{self.id}, '{self._sql_format(self._name)}', " + f"'{self._sql_format(self._type)}', '{tab}', {node}" + @@ -170,7 +171,7 @@ class BoundaryCondition(SQLSubModel): sql = ( "INSERT INTO " + - "boundary_condition_data(ind, data0, data1, bc) "+ + "boundary_condition_data(ind, data0, data1, bc) " + f"VALUES ({ind}, '{data0}', {data1}, {self.id})" ) execute(sql) @@ -246,7 +247,7 @@ class BoundaryCondition(SQLSubModel): new_1 = self._default_1 if len(header) != 0: - for i in [0,1]: + for i in [0, 1]: for j in range(len(header)): if self._header[i] == header[j]: if i == 0: @@ -259,13 +260,13 @@ class BoundaryCondition(SQLSubModel): return (new_0, new_1) - def add(self, index:int): + def add(self, index: int): value = (self._default_0, self._default_1) self._data.insert(index, value) self._status.modified() return value - def insert(self, index:int, value): + def insert(self, index: int, value): self._data.insert(index, value) self._status.modified() @@ -306,29 +307,28 @@ class BoundaryCondition(SQLSubModel): l.append(r) return l - def _set_i_c_v(self, index, column, value): v = list(self._data[index]) v[column] = self._types[column](value) self._data[index] = tuple(v) self._status.modified() - def set_i_0(self, index:int, value): + def set_i_0(self, index: int, value): self._set_i_c_v(index, 0, value) - def set_i_1(self, index:int, value): + def set_i_1(self, index: int, value): self._set_i_c_v(index, 1, value) @timer def convert(self, cls): - new = cls(name = self.name, status = self._status) + new = cls(name=self.name, status=self._status) new.node = self.node for i, _ in enumerate(self.data): new.add(i) - for i in [0,1]: - for j in [0,1]: + for i in [0, 1]: + for j in [0, 1]: if self._header[i] == new.header[j]: for ind, v in self.data: try: diff --git a/src/Model/BoundaryCondition/BoundaryConditionList.py b/src/Model/BoundaryCondition/BoundaryConditionList.py index eb612d9fa64b4e799883f11d8d7d3a5eca734d6b..44499316a4fe5ab2ab71c9781914289093b499f7 100644 --- a/src/Model/BoundaryCondition/BoundaryConditionList.py +++ b/src/Model/BoundaryCondition/BoundaryConditionList.py @@ -30,6 +30,7 @@ from Model.BoundaryCondition.BoundaryConditionTypes import ( Solid, ) + class BoundaryConditionList(PamhyrModelListWithTab): _tabs_list = ["liquid", "solid", "suspenssion"] _sub_classes = [ @@ -37,8 +38,8 @@ class BoundaryConditionList(PamhyrModelListWithTab): ] @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data['status']) + def _sql_load(cls, execute, data=None): + new = cls(status=data['status']) if data is None: data = {} @@ -51,7 +52,7 @@ class BoundaryConditionList(PamhyrModelListWithTab): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): execute("DELETE FROM boundary_condition") if data is None: @@ -60,7 +61,7 @@ class BoundaryConditionList(PamhyrModelListWithTab): for tab in self._tabs: data["tab"] = tab for bc in self._tabs[tab]: - bc._sql_save(execute, data = data) + bc._sql_save(execute, data=data) return True diff --git a/src/Model/BoundaryCondition/BoundaryConditionTypes.py b/src/Model/BoundaryCondition/BoundaryConditionTypes.py index af3c91fdd5228bed070fab8633d5c34b71b0c316..176bb78882ee308472721d51292cf9f9b0592ff4 100644 --- a/src/Model/BoundaryCondition/BoundaryConditionTypes.py +++ b/src/Model/BoundaryCondition/BoundaryConditionTypes.py @@ -22,7 +22,7 @@ from Model.BoundaryCondition.BoundaryCondition import BoundaryCondition class NotDefined(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): + def __init__(self, id: int = -1, name: str = "", status=None): super(NotDefined, self).__init__(id=id, name=name, status=status) self._type = "ND" @@ -32,9 +32,11 @@ class NotDefined(BoundaryCondition): def _default_0(self): return 0.0 + class PonctualContribution(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): - super(PonctualContribution, self).__init__(id=id, name=name, status=status) + def __init__(self, id: int = -1, name: str = "", status=None): + super(PonctualContribution, self).__init__( + id=id, name=name, status=status) self._type = "PC" self._header = ["time", "discharge"] @@ -44,8 +46,9 @@ class PonctualContribution(BoundaryCondition): def compatibility(cls): return ["liquid"] + class TimeOverZ(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): + def __init__(self, id: int = -1, name: str = "", status=None): super(TimeOverZ, self).__init__(id=id, name=name, status=status) self._type = "TZ" @@ -56,9 +59,11 @@ class TimeOverZ(BoundaryCondition): def compatibility(cls): return ["liquid"] + class TimeOverDischarge(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): - super(TimeOverDischarge, self).__init__(id=id, name=name, status=status) + def __init__(self, id: int = -1, name: str = "", status=None): + super(TimeOverDischarge, self).__init__( + id=id, name=name, status=status) self._type = "TD" self._header = ["time", "discharge"] @@ -68,8 +73,9 @@ class TimeOverDischarge(BoundaryCondition): def compatibility(cls): return ["liquid"] + class ZOverDischarge(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): + def __init__(self, id: int = -1, name: str = "", status=None): super(ZOverDischarge, self).__init__(id=id, name=name, status=status) self._type = "ZD" @@ -86,7 +92,7 @@ class ZOverDischarge(BoundaryCondition): class Solid(BoundaryCondition): - def __init__(self, id:int = -1, name:str = "", status = None): + def __init__(self, id: int = -1, name: str = "", status=None): super(Solid, self).__init__(id=id, name=name, status=status) self.d50 = 0.002 diff --git a/src/Model/Except.py b/src/Model/Except.py index 7d5e3959c933d2856c00340b0be2c3b9e1d9f9ad..ce667e38e1e411434194fd867bb318b64f196cfc 100644 --- a/src/Model/Except.py +++ b/src/Model/Except.py @@ -45,8 +45,9 @@ def exception_message_box(exception): # Custom error # ################ + class ExeceptionWithMessageBox(Exception): - def __init__(self, title = "Exeception"): + def __init__(self, title="Exeception"): self.title = title def header(self): @@ -72,7 +73,7 @@ class ExeceptionWithMessageBox(Exception): class NotImplementedMethodeError(ExeceptionWithMessageBox): def __init__(self, obj, func): super(NotImplementedMethodeError, self).__init__( - title = _translate("Exception", "Method not implemented") + title=_translate("Exception", "Method not implemented") ) self.obj = obj @@ -104,10 +105,11 @@ class NotImplementedMethodeError(ExeceptionWithMessageBox): f" '{self.obj.__class__}'" ) + class FileFormatError(ExeceptionWithMessageBox): def __init__(self, filename, reason): super(FileFormatError, self).__init__( - title = _translate("Exception", "FileFormatError") + title=_translate("Exception", "FileFormatError") ) self.reason = reason @@ -137,7 +139,7 @@ class FileFormatError(ExeceptionWithMessageBox): class ClipboardFormatError(ExeceptionWithMessageBox): def __init__(self, mime=None, header=None, data=None): super(ClipboardFormatError, self).__init__( - title = _translate("Exception", "Clipboard format error") + title=_translate("Exception", "Clipboard format error") ) self._mime = mime diff --git a/src/Model/Friction/Friction.py b/src/Model/Friction/Friction.py index 7e29e93141f67a007308e886bcc206f66d95887d..baea73978f0d72a84d67f26e6971306deb94fdf5 100644 --- a/src/Model/Friction/Friction.py +++ b/src/Model/Friction/Friction.py @@ -20,8 +20,9 @@ from tools import trace, timer from Model.Tools.PamhyrDB import SQLSubModel + class Friction(SQLSubModel): - def __init__(self, name:str = "", status = None): + def __init__(self, name: str = "", status=None): super(Friction, self).__init__() self._status = status @@ -57,7 +58,7 @@ class Friction(SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = [] reach = data["parent"] # Reach object status = data["status"] @@ -78,7 +79,7 @@ class Friction(SQLSubModel): es = next(filter(lambda s: s.id == row[4], stricklers)) # Create friction - sec = cls(status = status) + sec = cls(status=status) sec.edge = reach sec.begin_kp = row[1] sec.end_kp = row[2] @@ -87,7 +88,7 @@ class Friction(SQLSubModel): yield ind, sec - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ind = data["ind"] execute( "INSERT INTO " + @@ -119,7 +120,7 @@ class Friction(SQLSubModel): self._edge = edge if (edge is not None and self._begin_kp == 0.0 and - self._end_kp == 0.0): + self._end_kp == 0.0): self._begin_kp = self._edge.reach.get_kp_min() self._end_kp = self._edge.reach.get_kp_max() self._status.modified() diff --git a/src/Model/Friction/FrictionList.py b/src/Model/Friction/FrictionList.py index 777729c76fbcbe4178c3df0be586c5ad31dc2b82..9531affa14900b8de69764be3121b138f2945b8a 100644 --- a/src/Model/Friction/FrictionList.py +++ b/src/Model/Friction/FrictionList.py @@ -28,6 +28,7 @@ from Model.Friction.Friction import Friction logger = logging.getLogger() + class FrictionList(PamhyrModelList): _sub_classes = [ Friction @@ -46,8 +47,8 @@ class FrictionList(PamhyrModelList): return True @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data['status']) + def _sql_load(cls, execute, data=None): + new = cls(status=data['status']) new._lst = Friction._sql_load( execute, data @@ -55,7 +56,7 @@ class FrictionList(PamhyrModelList): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): reach = data["reach"] execute(f"DELETE FROM friction WHERE reach = {reach.id}") @@ -63,7 +64,7 @@ class FrictionList(PamhyrModelList): ind = 0 for friction in self._lst: data["ind"] = ind - ok &= friction._sql_save(execute, data = data) + ok &= friction._sql_save(execute, data=data) ind += 1 return ok @@ -76,7 +77,7 @@ class FrictionList(PamhyrModelList): lambda p: p[1], sorted( self._lst, - key = lambda p: p[0] + key=lambda p: p[0] ) ) ) @@ -93,7 +94,7 @@ class FrictionList(PamhyrModelList): return self.lst def new(self, index): - n = Friction(status = self._status) + n = Friction(status=self._status) self._lst.insert(index, n) self._status.modified() return n diff --git a/src/Model/Geometry/Point.py b/src/Model/Geometry/Point.py index cfea71a47f6384502e7c3edb07a12a17f31410b9..d6deead848d12cc28d48140be752f9172454d60f 100644 --- a/src/Model/Geometry/Point.py +++ b/src/Model/Geometry/Point.py @@ -18,8 +18,9 @@ from Model.Except import NotImplementedMethodeError + class Point(object): - def __init__(self, name:str = "", profile=None, status = None): + def __init__(self, name: str = "", profile=None, status=None): super(Point, self).__init__() self._status = status @@ -28,7 +29,6 @@ class Point(object): self._profile = profile self._sl = None - @property def sl(self): if self._sl is None: diff --git a/src/Model/Geometry/PointXY.py b/src/Model/Geometry/PointXY.py index 7448d0459ef8912bbd29deb26b8d9c316693f9ea..3c958721a36957af477bb534d4a278cdcef3f5d8 100644 --- a/src/Model/Geometry/PointXY.py +++ b/src/Model/Geometry/PointXY.py @@ -20,10 +20,11 @@ from math import dist from Model.Geometry.Point import Point + class PointAC(Point): - def __init__(self, a:float = 0.0, c:float = 0.0, - name: str = "", status = None): - super(PointXY, self).__init__(name = name, status = status) + def __init__(self, a: float = 0.0, c: float = 0.0, + name: str = "", status=None): + super(PointXY, self).__init__(name=name, status=status) self._a = float(a) self._c = float(c) diff --git a/src/Model/Geometry/PointXYZ.py b/src/Model/Geometry/PointXYZ.py index 6f1b57849d69873698de9afaf738a50661892088..9a1082a5abf941622ca59035ad9c1a35e96849c6 100644 --- a/src/Model/Geometry/PointXYZ.py +++ b/src/Model/Geometry/PointXYZ.py @@ -22,12 +22,14 @@ import numpy as np from Model.Tools.PamhyrDB import SQLSubModel from Model.Geometry.Point import Point + class PointXYZ(Point, SQLSubModel): _sub_classes = [] - def __init__(self, x:float = 0.0, y:float = 0.0, z:float = 0.0, - name:str = "", profile = None, status = None): - super(PointXYZ, self).__init__(name=name, profile=profile, status=status) + def __init__(self, x: float = 0.0, y: float = 0.0, z: float = 0.0, + name: str = "", profile=None, status=None): + super(PointXYZ, self).__init__( + name=name, profile=profile, status=status) self._x = float(x) self._y = float(y) @@ -69,7 +71,7 @@ class PointXYZ(Point, SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): status = data["status"] profile = data["profile"] @@ -89,10 +91,10 @@ class PointXYZ(Point, SQLSubModel): sl = row[5] new = cls( - name = name, - x = x, y = y, z = z, - profile = profile, - status = status + name=name, + x=x, y=y, z=z, + profile=profile, + status=status ) if sl == -1 or sl == None: @@ -107,7 +109,7 @@ class PointXYZ(Point, SQLSubModel): yield ind, new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): profile = data["profile"] ind = data["ind"] @@ -115,7 +117,7 @@ class PointXYZ(Point, SQLSubModel): sql = ( "INSERT OR REPLACE INTO " + - "geometry_pointXYZ(ind, name, x, y, z, profile, sl) "+ + "geometry_pointXYZ(ind, name, x, y, z, profile, sl) " + "VALUES (" + f"{ind}, '{self._sql_format(self._name)}', " + f"{self.x}, {self.y}, {self.z}, " + @@ -126,7 +128,6 @@ class PointXYZ(Point, SQLSubModel): return True - @classmethod def from_data(cls, header, data): point = None @@ -149,7 +150,6 @@ class PointXYZ(Point, SQLSubModel): return point - def __repr__(self): return f"({self._x}, {self._y}, {self._z}, {self._name})" diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py index 6290498cb32ce4106bdd623d58387299f2fe3e5c..d28da7d652040ac802f4848b3459071947b0e484 100644 --- a/src/Model/Geometry/Profile.py +++ b/src/Model/Geometry/Profile.py @@ -25,14 +25,15 @@ from Model.Except import NotImplementedMethodeError logger = logging.getLogger() + class Profile(object): _id_cnt = 0 - def __init__(self, id:int = -1, num:int = 0, - kp:float = 0.0, name:str = "", - code1:int = 0, code2:int = 0, - _type:str = "", reach = None, - status = None): + def __init__(self, id: int = -1, num: int = 0, + kp: float = 0.0, name: str = "", + code1: int = 0, code2: int = 0, + _type: str = "", reach=None, + status=None): super(Profile, self).__init__() self._status = status @@ -71,7 +72,7 @@ class Profile(object): lambda p: p[1], sorted( self._points, - key = lambda p: p[0] + key=lambda p: p[0] ) ) ) @@ -185,7 +186,7 @@ class Profile(object): self._profile_type = value self._status.modified() - def point(self, i:int): + def point(self, i: int): if i < len(self.points): return self.points[i] @@ -200,8 +201,7 @@ class Profile(object): return [point for point in self.points if point.point_is_named()] - - def insert_point(self, index: int, point:Point): + def insert_point(self, index: int, point: Point): """Insert point at index. Args: @@ -214,7 +214,6 @@ class Profile(object): self.points.insert(index, point) self._status.modified() - def delete(self, indexes: int): """Delete points at index @@ -281,11 +280,11 @@ class Profile(object): @timer def sort(self, column, is_reversed: bool = False): - predicate = lambda p: p.x + def predicate(p): return p.x if column == 'y': - predicate = lambda p: p.y + def predicate(p): return p.y elif column == 'z': - predicate = lambda p: p.z + def predicate(p): return p.z self.points = sorted( self.points, diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 929928b46e976a3267fb5fa755f2c5d010338c7a..de0fcd8cecc9e40c0e1bb565eabd3078f38d6f96 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -30,6 +30,7 @@ from Model.Geometry.Vector_1d import Vector1d logger = logging.getLogger() + class ProfileXYZ(Profile, SQLSubModel): _sub_classes = [ PointXYZ, @@ -39,11 +40,11 @@ class ProfileXYZ(Profile, SQLSubModel): id: int = -1, name: str = "", kp: float = 0., - reach = None, - num = 0, + reach=None, + num=0, nb_point: int = 0, code1: int = 0, code2: int = 0, - status = None): + status=None): """ProfileXYZ constructor Args: @@ -57,14 +58,14 @@ class ProfileXYZ(Profile, SQLSubModel): Nothing. """ super(ProfileXYZ, self).__init__( - id = id, - num = num, - name = name, - kp = kp, - code1 = code1, code2 = code2, - _type = "XYZ", - reach = reach, - status = status, + id=id, + num=num, + name=name, + kp=kp, + code1=code1, code2=code2, + _type="XYZ", + reach=reach, + status=status, ) @classmethod @@ -103,7 +104,7 @@ class ProfileXYZ(Profile, SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): profiles = [] status = data["status"] reach = data["reach"] @@ -128,11 +129,11 @@ class ProfileXYZ(Profile, SQLSubModel): sl = row[7] new = cls( - id=id, num = num, - name = name, kp = kp, - code1 = code1, code2 = code2, - reach = data["parent"], - status = status + id=id, num=num, + name=name, kp=kp, + code1=code1, code2=code2, + reach=data["parent"], + status=status ) if sl == -1 or sl == None: @@ -154,7 +155,7 @@ class ProfileXYZ(Profile, SQLSubModel): # return profiles - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ok = True ind = data["ind"] @@ -162,7 +163,7 @@ class ProfileXYZ(Profile, SQLSubModel): sql = ( "INSERT OR REPLACE INTO " + - "geometry_profileXYZ(id, ind, name, reach, kp, num, code1, code2, sl) "+ + "geometry_profileXYZ(id, ind, name, reach, kp, num, code1, code2, sl) " + "VALUES (" + f"{self.id}, {ind}, '{self._sql_format(self._name)}', " + f"{self.reach.id}, {self.kp}, {self.num}, " + @@ -225,7 +226,6 @@ class ProfileXYZ(Profile, SQLSubModel): return point - def x(self): return [point.x for point in self.points] @@ -374,9 +374,9 @@ class ProfileXYZ(Profile, SQLSubModel): constant = 0.0 if (first_named_point is not None and - last_named_point is not None): + last_named_point is not None): if (first_named_point != last_named_point and - first_named_point.x != last_named_point.x): + first_named_point.x != last_named_point.x): vector = Vector1d(first_named_point, last_named_point) normalized_direction_vec = vector.normalized_direction_vector() else: diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index a6ed514cb5d49d4cd956e66e873f092747fe6a72..c2df3a7576298134595da853c458dce3d619e292 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -36,6 +36,7 @@ from Model.Except import FileFormatError, exception_message_box logger = logging.getLogger() + class Reach(SQLSubModel): _sub_classes = [ ProfileXYZ, @@ -59,17 +60,17 @@ class Reach(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data["status"], parent = data["parent"]) + def _sql_load(cls, execute, data=None): + new = cls(status=data["status"], parent=data["parent"]) new._profiles = ProfileXYZ._sql_load( execute, - data = data + data=data ) return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): # Delete old data execute(f"DELETE FROM geometry_profileXYZ WHERE reach = {self.id}") # execute(f"DELETE FROM geometry_pointXYZ") @@ -115,7 +116,7 @@ class Reach(SQLSubModel): lambda p: p[1], sorted( self._profiles, - key = lambda p: p[0] + key=lambda p: p[0] ) ) ) @@ -195,7 +196,6 @@ class Reach(SQLSubModel): self._update_profile_numbers() self._status.modified() - def delete(self, indexes): """Delete some elements in profile list @@ -242,7 +242,6 @@ class Reach(SQLSubModel): self._update_profile_numbers() self._status.modified() - def move_up_profile(self, index: int): if index < len(self.profiles): next = index - 1 @@ -298,7 +297,6 @@ class Reach(SQLSubModel): def get_kp_max(self): return max(self.get_kp()) - # Sediment Layers def get_sl(self): @@ -437,7 +435,6 @@ class Reach(SQLSubModel): def get_guidelines_z(self): return self._map_guidelines_points(lambda p: p.z) - # Sort @timer @@ -482,7 +479,8 @@ class Reach(SQLSubModel): try: list_profile, list_header = self.read_file_st(str(file_path_name)) - profile_header = ["num", "code1", "code2", "nb_point", "kp", "name"] + profile_header = ["num", "code1", + "code2", "nb_point", "kp", "name"] if list_profile and list_header: for ind, profile in enumerate(list_profile): diff --git a/src/Model/Geometry/Vector_1d.py b/src/Model/Geometry/Vector_1d.py index a3da9358a4a4946b5b6510d0a6fabf5476c9b086..e136f121fcf51dd8dd3b338244728b7d93bec8d2 100644 --- a/src/Model/Geometry/Vector_1d.py +++ b/src/Model/Geometry/Vector_1d.py @@ -19,6 +19,7 @@ import numpy as np from Model.Geometry.PointXYZ import PointXYZ + class Vector1d: def __init__(self, a: PointXYZ, b: PointXYZ): self.A = a diff --git a/src/Model/InitialConditions/InitialConditions.py b/src/Model/InitialConditions/InitialConditions.py index a40e026176f052d9f0d5e1a1c365f455cddd86b7..20bbb3d0956f62a7c39d6ed2e8774bae92551d28 100644 --- a/src/Model/InitialConditions/InitialConditions.py +++ b/src/Model/InitialConditions/InitialConditions.py @@ -22,12 +22,13 @@ from functools import reduce from Model.Tools.PamhyrDB import SQLSubModel + class Data(SQLSubModel): - def __init__(self, name:str = "", - comment:str = "", reach = None, - kp:float = 0.0, discharge:float = 0.0, - height:float = 0.0, - status = None): + def __init__(self, name: str = "", + comment: str = "", reach=None, + kp: float = 0.0, discharge: float = 0.0, + height: float = 0.0, + status=None): super(Data, self).__init__() self._status = status @@ -73,7 +74,7 @@ class Data(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): id = data["reach"].id table = execute( "SELECT ind, name, comment, kp, discharge, height " + @@ -95,20 +96,20 @@ class Data(SQLSubModel): height = row[5] d = cls( - reach = data["reach"], - status = data["status"], - name = name, - comment = comment, - kp = kp, - discharge = discharge, - height = height, + reach=data["reach"], + status=data["status"], + name=name, + comment=comment, + kp=kp, + discharge=discharge, + height=height, ) new[ind] = d return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ind = data["ind"] execute( @@ -124,16 +125,15 @@ class Data(SQLSubModel): return True - def copy(self): new = Data( - name = self.name, - comment = self._comment, - kp = self._kp, - discharge = self._discharge, - height = self._height, - reach = self._reach, - status = self._status, + name=self.name, + comment=self._comment, + kp=self._kp, + discharge=self._discharge, + height=self._height, + reach=self._reach, + status=self._status, ) return new @@ -216,7 +216,7 @@ class InitialConditions(SQLSubModel): Data ] - def __init__(self, reach = None, status = None): + def __init__(self, reach=None, status=None): super(InitialConditions, self).__init__() self._status = status @@ -233,21 +233,21 @@ class InitialConditions(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = cls( - reach = data["reach"], - status = data["status"] + reach=data["reach"], + status=data["status"] ) new._data = Data._sql_load( execute, - data = data + data=data ) if new._data is not None: yield new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ok = True ind = 0 @@ -286,7 +286,7 @@ class InitialConditions(SQLSubModel): self._status.modified() def new(self, index): - n = Data(reach = self._reach, status = self._status) + n = Data(reach=self._reach, status=self._status) self._data.insert(index, n) self._status.modified() @@ -319,7 +319,6 @@ class InitialConditions(SQLSubModel): self._data.sort(reverse=reverse, key=key) self._status.modified() - def _data_get(self, key): return list( map( @@ -339,8 +338,8 @@ class InitialConditions(SQLSubModel): def _sort_by_z_and_kp(self, profiles): profiles.sort( - reverse = False, - key = lambda p: p.kp + reverse=False, + key=lambda p: p.kp ) first_z = profiles[0].z() @@ -348,11 +347,11 @@ class InitialConditions(SQLSubModel): if first_z > last_z: profiles.sort( - reverse = True, - key = lambda p: p.kp + reverse=True, + key=lambda p: p.kp ) - def generate_growing_constante_height(self, height:float): + def generate_growing_constante_height(self, height: float): self._data = [] profiles = self._reach.reach.profiles @@ -360,7 +359,7 @@ class InitialConditions(SQLSubModel): prev = None for profile in profiles: - new = Data(reach = self._reach, status = self._status) + new = Data(reach=self._reach, status=self._status) new["kp"] = profile.kp if prev is None: @@ -379,11 +378,11 @@ class InitialConditions(SQLSubModel): is_reverse = True self._data.sort( - reverse = not is_reverse, - key = lambda d: d['kp'] + reverse=not is_reverse, + key=lambda d: d['kp'] ) - def generate_discharge(self, discharge:float): + def generate_discharge(self, discharge: float): self._new = [] for d in self._data: diff --git a/src/Model/InitialConditions/InitialConditionsDict.py b/src/Model/InitialConditions/InitialConditionsDict.py index f2bd038f213ca1fdb3fb963719dabf40206f6276..5fc8b650963eb7e9942251ac7723ce608c9d4d4c 100644 --- a/src/Model/InitialConditions/InitialConditionsDict.py +++ b/src/Model/InitialConditions/InitialConditionsDict.py @@ -23,21 +23,22 @@ from tools import trace, timer from Model.Tools.PamhyrDict import PamhyrModelDict from Model.InitialConditions.InitialConditions import InitialConditions + class InitialConditionsDict(PamhyrModelDict): _sub_classes = [ InitialConditions, ] @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data["status"]) + def _sql_load(cls, execute, data=None): + new = cls(status=data["status"]) for reach in data["edges"]: data["reach"] = reach ic = InitialConditions._sql_load( execute, - data = data + data=data ) if ic is not None: @@ -45,7 +46,7 @@ class InitialConditionsDict(PamhyrModelDict): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ok = True if data is None: data = {} @@ -58,7 +59,6 @@ class InitialConditionsDict(PamhyrModelDict): return ok - def get(self, key): if key in self._dict: v = self._dict[key] @@ -72,6 +72,6 @@ class InitialConditionsDict(PamhyrModelDict): return new def new(self, reach): - new = InitialConditions(reach = reach, status = self._status) + new = InitialConditions(reach=reach, status=self._status) self.set(reach, new) return new diff --git a/src/Model/LateralContribution/LateralContribution.py b/src/Model/LateralContribution/LateralContribution.py index 727cf21bfdd8a619b5113aa7de89e8c05dc0816e..de117744a8a5117555c91109ca683ef6c0eff217 100644 --- a/src/Model/LateralContribution/LateralContribution.py +++ b/src/Model/LateralContribution/LateralContribution.py @@ -25,11 +25,12 @@ from Model.Except import NotImplementedMethodeError logger = logging.getLogger() + class LateralContribution(SQLSubModel): _sub_classes = [] _id_cnt = 0 - def __init__(self, id:int = -1, name:str = "", status = None): + def __init__(self, id: int = -1, name: str = "", status=None): super(LateralContribution, self).__init__() self._status = status @@ -39,7 +40,6 @@ class LateralContribution(SQLSubModel): else: self.id = id - self._name = name self._type = "" self._edge = None @@ -49,7 +49,8 @@ class LateralContribution(SQLSubModel): self._header = [] self._types = [float, float] - LateralContribution._id_cnt = max(LateralContribution._id_cnt + 1, self.id) + LateralContribution._id_cnt = max( + LateralContribution._id_cnt + 1, self.id) @classmethod def _sql_create(cls, execute): @@ -99,7 +100,7 @@ class LateralContribution(SQLSubModel): return res @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = [] tab = data["tab"] @@ -112,9 +113,9 @@ class LateralContribution(SQLSubModel): t = row[2] ctor = cls._get_ctor_from_type(t) lc = ctor( - id = row[0], - name = row[1], - status = data['status'] + id=row[0], + name=row[1], + status=data['status'] ) lc.edge = None if row[3] != -1: @@ -141,7 +142,7 @@ class LateralContribution(SQLSubModel): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): tab = data["tab"] execute(f"DELETE FROM lateral_contribution WHERE id = {self.id}") @@ -153,7 +154,7 @@ class LateralContribution(SQLSubModel): sql = ( "INSERT INTO " + - "lateral_contribution(id, name, type, tab, edge, begin_kp, end_kp) "+ + "lateral_contribution(id, name, type, tab, edge, begin_kp, end_kp) " + "VALUES (" + f"{self.id}, '{self._sql_format(self._name)}', " + f"'{self._sql_format(self._type)}', '{tab}', {edge}, " + @@ -169,7 +170,7 @@ class LateralContribution(SQLSubModel): sql = ( "INSERT INTO " + - "lateral_contribution_data(ind, data0, data1, lc) "+ + "lateral_contribution_data(ind, data0, data1, lc) " + f"VALUES ({ind}, '{data0}', {data1}, {self.id})" ) execute(sql) @@ -282,7 +283,7 @@ class LateralContribution(SQLSubModel): new_1 = self._default_1 if len(header) != 0: - for i in [0,1]: + for i in [0, 1]: for j in range(len(header)): if self._header[i] == header[j]: if i == 0: @@ -295,13 +296,13 @@ class LateralContribution(SQLSubModel): return (new_0, new_1) - def add(self, index:int): + def add(self, index: int): value = (self._default_0, self._default_1) self._data.insert(index, value) self._status.modified() return value - def insert(self, index:int, value): + def insert(self, index: int, value): self._data.insert(index, value) self._status.modified() @@ -342,22 +343,21 @@ class LateralContribution(SQLSubModel): l.append(r) return l - def _set_i_c_v(self, index, column, value): v = list(self._data[index]) v[column] = self._types[column](value) self._data[index] = tuple(v) self._status.modified() - def set_i_0(self, index:int, value): + def set_i_0(self, index: int, value): self._set_i_c_v(index, 0, value) - def set_i_1(self, index:int, value): + def set_i_1(self, index: int, value): self._set_i_c_v(index, 1, value) @timer def convert(self, cls): - new = cls(name = self.name, status = self._status) + new = cls(name=self.name, status=self._status) new.edge = self.edge new.begin_kp = self.begin_kp new.end_kp = self.end_kp @@ -365,8 +365,8 @@ class LateralContribution(SQLSubModel): for i, _ in enumerate(self.data): new.add(i) - for i in [0,1]: - for j in [0,1]: + for i in [0, 1]: + for j in [0, 1]: if self._header[i] == new.header[j]: for ind, v in self.data: try: diff --git a/src/Model/LateralContribution/LateralContributionList.py b/src/Model/LateralContribution/LateralContributionList.py index 8d0ba37dbd07ca60b037da4d2bbf2aa3cb2a59ff..a69330aede288386b4ea496e4fbc1815c7090c3e 100644 --- a/src/Model/LateralContribution/LateralContributionList.py +++ b/src/Model/LateralContribution/LateralContributionList.py @@ -27,6 +27,7 @@ from Model.LateralContribution.LateralContributionTypes import ( NotDefined, LateralContrib, Rain, Evaporation, ) + class LateralContributionList(PamhyrModelListWithTab): _tabs_list = ["liquid", "solid", "suspenssion"] _sub_classes = [ @@ -34,8 +35,8 @@ class LateralContributionList(PamhyrModelListWithTab): ] @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data['status']) + def _sql_load(cls, execute, data=None): + new = cls(status=data['status']) if data is None: data = {} @@ -48,7 +49,7 @@ class LateralContributionList(PamhyrModelListWithTab): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): execute("DELETE FROM lateral_contribution") if data is None: @@ -57,7 +58,7 @@ class LateralContributionList(PamhyrModelListWithTab): for tab in self._tabs: data["tab"] = tab for lc in self._tabs[tab]: - lc._sql_save(execute, data = data) + lc._sql_save(execute, data=data) return True diff --git a/src/Model/LateralContribution/LateralContributionTypes.py b/src/Model/LateralContribution/LateralContributionTypes.py index d669266a4d3e6ea36952fe8d149f998458e5ceaf..4f0a843c66ad8d6117733bba25cd413e78e60496 100644 --- a/src/Model/LateralContribution/LateralContributionTypes.py +++ b/src/Model/LateralContribution/LateralContributionTypes.py @@ -22,7 +22,7 @@ from Model.LateralContribution.LateralContribution import LateralContribution class NotDefined(LateralContribution): - def __init__(self, id:int = -1, name:str = "", status=None): + def __init__(self, id: int = -1, name: str = "", status=None): super(NotDefined, self).__init__(id=id, name=name, status=status) self._type = "ND" @@ -32,8 +32,9 @@ class NotDefined(LateralContribution): def _default_0(self): return 0.0 + class LateralContrib(LateralContribution): - def __init__(self, id:int = -1, name:str = "", status=None): + def __init__(self, id: int = -1, name: str = "", status=None): super(LateralContrib, self).__init__(id=id, name=name, status=status) self._type = "LC" @@ -44,8 +45,9 @@ class LateralContrib(LateralContribution): def compatibility(cls): return ["liquid"] + class Rain(LateralContribution): - def __init__(self, id:int = -1, name:str = "", status=None): + def __init__(self, id: int = -1, name: str = "", status=None): super(Rain, self).__init__(id=id, name=name, status=status) self._type = "RA" @@ -56,8 +58,9 @@ class Rain(LateralContribution): def compatibility(cls): return ["liquid"] + class Evaporation(LateralContribution): - def __init__(self, id:int = -1, name:str = "", status=None): + def __init__(self, id: int = -1, name: str = "", status=None): super(Evaporation, self).__init__(id=id, name=name, status=status) self._type = "EV" diff --git a/src/Model/Network/Edge.py b/src/Model/Network/Edge.py index 122499434559a5165e2479686433fa8216d604ec..dddd8418aec95af410e68f0df1e7f929e01fd45f 100644 --- a/src/Model/Network/Edge.py +++ b/src/Model/Network/Edge.py @@ -18,13 +18,14 @@ from Model.Network.Node import Node + class Edge(object): _id_cnt = 0 - def __init__(self, id:int, name:str, - node1:Node = None, - node2:Node = None, - status = None): + def __init__(self, id: int, name: str, + node1: Node = None, + node2: Node = None, + status=None): super(Edge, self).__init__() self._status = status diff --git a/src/Model/Network/Graph.py b/src/Model/Network/Graph.py index 62948a2b8a6b50b79ee845d44b443f00be800bcb..d617ba77039b09e21d65925dca13fac464856dfe 100644 --- a/src/Model/Network/Graph.py +++ b/src/Model/Network/Graph.py @@ -21,8 +21,9 @@ from functools import reduce from Model.Network.Node import Node from Model.Network.Edge import Edge + class Graph(object): - def __init__(self, status = None): + def __init__(self, status=None): super(Graph, self).__init__() self._status = status @@ -83,7 +84,7 @@ class Graph(object): False ) - def node(self, node_name:str): + def node(self, node_name: str): node = list( filter( lambda n: n.name == node_name, @@ -96,7 +97,7 @@ class Graph(object): return node[0] - def edge(self, edge_name:str): + def edge(self, edge_name: str): edge = list( filter( lambda e: e.name == edge_name, @@ -109,12 +110,12 @@ class Graph(object): return edge[0] - def _create_node(self, x:float, y:float): + def _create_node(self, x: float, y: float): node = self._node_ctor( -1, "", - x = x, y = y, - status = self._status + x=x, y=y, + status=self._status ) return node @@ -123,14 +124,14 @@ class Graph(object): self._status.modified() return node - def add_node(self, x:float = 0.0, y:float = 0.0): + def add_node(self, x: float = 0.0, y: float = 0.0): node = self._create_node(x, y) return self._add_node(node) def insert_node(self, node): return self._add_node(node) - def remove_node(self, node_name:str): + def remove_node(self, node_name: str): self._nodes = list( filter( lambda n: n.name != node_name, @@ -139,19 +140,18 @@ class Graph(object): ) self._status.modified() - def create_node(self, x:float = 0.0, y:float = 0.0): + def create_node(self, x: float = 0.0, y: float = 0.0): node = self._create_node(x, y) return node - def _create_edge(self, n1:Node, n2:Node): + def _create_edge(self, n1: Node, n2: Node): edge = self._edge_ctor( -1, "", n1, n2, - status = self._status + status=self._status ) return edge - def _add_edge(self, edge): # This edge already exists ? if any(filter(lambda e: (e.node1 == edge.node1 and @@ -164,17 +164,17 @@ class Graph(object): self._status.modified() return edge - def add_edge(self, n1:Node, n2:Node): + def add_edge(self, n1: Node, n2: Node): edge = self._create_edge(n1, n2) return self._add_edge(edge) def insert_edge(self, edge): return self._add_edge(edge) - def create_edge(self, n1:Node, n2:Node): + def create_edge(self, n1: Node, n2: Node): return self._create_edge(n1, n2) - def remove_edge(self, edge_name:str): + def remove_edge(self, edge_name: str): self._edges = list( filter( lambda e: e.name != edge_name, diff --git a/src/Model/Network/Node.py b/src/Model/Network/Node.py index 7b8f52bab01b5c23623d5f630b091c39f49a06a5..d79b71cfeded878490751fbf19332ee8632e405f 100644 --- a/src/Model/Network/Node.py +++ b/src/Model/Network/Node.py @@ -18,12 +18,13 @@ from Model.Network.Point import Point + class Node(object): _id_cnt = 0 - def __init__(self, id:int, name:str, - x:float = 0.0, y:float = 0.0, - status = None): + def __init__(self, id: int, name: str, + x: float = 0.0, y: float = 0.0, + status=None): super(Node, self).__init__() self._status = status @@ -73,7 +74,6 @@ class Node(object): def y(self): return self.pos.y - def setPos(self, x, y): self.pos.x = x self.pos.y = y diff --git a/src/Model/Network/Point.py b/src/Model/Network/Point.py index 0bb1260994f1ab8dfb58ab1975961e543ab72833..38f0c83fbbc50ea495826313f30728f2df648bc8 100644 --- a/src/Model/Network/Point.py +++ b/src/Model/Network/Point.py @@ -17,7 +17,7 @@ # -*- coding: utf-8 -*- class Point(object): - def __init__(self, x:float, y:float): + def __init__(self, x: float, y: float): super(Point, self).__init__() self.x = x diff --git a/src/Model/Results/Results.py b/src/Model/Results/Results.py index 3258b0e170e94418fb32706368c9a1d361f13bf2..7c9ed54c9a1028d61a1ab0c22012cd69b26e3114 100644 --- a/src/Model/Results/Results.py +++ b/src/Model/Results/Results.py @@ -24,8 +24,9 @@ from Model.Results.River.River import River logger = logging.getLogger() + class Results(object): - def __init__(self, study = None): + def __init__(self, study=None): self._study = study self._river = River(self._study) diff --git a/src/Model/Results/River/River.py b/src/Model/Results/River/River.py index 80cd8450505421b6436a46b0d8fc610c33acd53f..7597d7512b9fdef526d208c2c629fec9346e8951 100644 --- a/src/Model/Results/River/River.py +++ b/src/Model/Results/River/River.py @@ -20,11 +20,12 @@ from datetime import datetime logger = logging.getLogger() + class Profile(object): def __init__(self, profile, study): self._study = study - self._profile = profile # Source profile in the study - self._data = {} # Dict of dict {<ts>: {<key>: <value>, ...}, ...} + self._profile = profile # Source profile in the study + self._data = {} # Dict of dict {<ts>: {<key>: <value>, ...}, ...} def __len__(self): return len(self._data) @@ -58,10 +59,11 @@ class Profile(object): def get_ts_key(self, timestamp, key): return self._data[timestamp][key] + class Reach(object): def __init__(self, reach, study): self._study = study - self._reach = reach # Source reach in the study + self._reach = reach # Source reach in the study self._profiles = list( map( lambda p: Profile(p, self._study), @@ -90,6 +92,7 @@ class Reach(object): def set(self, profile_id, timestamp, key, data): self._profiles[profile_id].set(timestamp, key, data) + class River(object): def __init__(self, study): self._study = study diff --git a/src/Model/River.py b/src/Model/River.py index d5dccb9ec7e965cf25e7ecedc3aef1980a22ed0b..798a24e1dc45227797c1fb1c229b42c2f2fc4f7f 100644 --- a/src/Model/River.py +++ b/src/Model/River.py @@ -37,16 +37,17 @@ from Model.SedimentLayer.SedimentLayerList import SedimentLayerList from Solver.Solvers import solver_type_list + class RiverNode(Node, SQLSubModel): _sub_classes = [] - def __init__(self, id:str, name:str, - x:float, y:float, - status = None): + def __init__(self, id: str, name: str, + x: float, y: float, + status=None): super(RiverNode, self).__init__( id, name, x, y, - status = status + status=status ) self._locker = None @@ -70,7 +71,7 @@ class RiverNode(Node, SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): nodes = [] table = execute("SELECT id, name, x, y FROM river_node") @@ -82,11 +83,11 @@ class RiverNode(Node, SQLSubModel): return nodes - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): sql = ( "INSERT OR REPLACE INTO river_node(id, name, x, y) VALUES (" + f"{self.id}, '{self._sql_format(self.name)}', " + - f"{self.x}, {self.y}"+ + f"{self.x}, {self.y}" + ")" ) execute(sql) @@ -108,18 +109,18 @@ class RiverReach(Edge, SQLSubModel): FrictionList, ] - def __init__(self, id:str, name:str, - node1:RiverNode = None, - node2:RiverNode = None, - status = None): + def __init__(self, id: str, name: str, + node1: RiverNode = None, + node2: RiverNode = None, + status=None): super(RiverReach, self).__init__( id, name, node1, node2, - status = status + status=status ) self._reach = Reach(status=self._status, parent=self) - self._frictions = FrictionList(status = self._status) + self._frictions = FrictionList(status=self._status) @classmethod def _sql_create(cls, execute): @@ -143,13 +144,14 @@ class RiverReach(Edge, SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): reachs = [] if data is None: data = {} - table = execute("SELECT id, name, enable, node1, node2 FROM river_reach") + table = execute( + "SELECT id, name, enable, node1, node2 FROM river_reach") for row in table: # Update id counter cls._id_cnt = max(cls._id_cnt, row[0]) @@ -161,8 +163,8 @@ class RiverReach(Edge, SQLSubModel): node1 = next(filter(lambda n: n.id == row[3], data["nodes"])) node2 = next(filter(lambda n: n.id == row[4], data["nodes"])) - new = cls(id, name, node1, node2, status = data["status"]) - new.enable(enable = enable) + new = cls(id, name, node1, node2, status=data["status"]) + new.enable(enable=enable) data["reach"] = id data["parent"] = new @@ -174,14 +176,14 @@ class RiverReach(Edge, SQLSubModel): return reachs - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): sql = ( "INSERT OR REPLACE INTO " + - "river_reach(id, name, enable, node1, node2) "+ + "river_reach(id, name, enable, node1, node2) " + "VALUES (" + f"{self.id}, '{self._sql_format(self._name)}', " + f"{self._sql_format(self.is_enable())}," - f"{self.node1.id}, {self.node2.id}"+ + f"{self.node1.id}, {self.node2.id}" + ")" ) execute(sql) @@ -202,6 +204,7 @@ class RiverReach(Edge, SQLSubModel): def frictions(self): return self._frictions + class River(Graph, SQLSubModel): _sub_classes = [ RiverNode, @@ -223,7 +226,8 @@ class River(Graph, SQLSubModel): self._current_reach = None self._boundary_condition = BoundaryConditionList(status=self._status) - self._lateral_contribution = LateralContributionList(status=self._status) + self._lateral_contribution = LateralContributionList( + status=self._status) self._initial_conditions = InitialConditionsDict(status=self._status) self._stricklers = StricklersList(status=self._status) self._parameters = {} @@ -240,7 +244,7 @@ class River(Graph, SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = cls(data["status"]) # Stricklers (Stricklers is load in first because it's needed @@ -251,7 +255,6 @@ class River(Graph, SQLSubModel): ) data["stricklers"] = new._stricklers - # Initial conditions new._sediment_layers = SedimentLayerList._sql_load( execute, @@ -297,7 +300,7 @@ class River(Graph, SQLSubModel): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): objs = (self._nodes + self._edges) objs.append(self._boundary_condition) objs.append(self._initial_conditions) @@ -344,7 +347,6 @@ class River(Graph, SQLSubModel): return ret[0] - @property def parameters(self): return self._parameters @@ -354,8 +356,8 @@ class River(Graph, SQLSubModel): return self._parameters[solver] new = SolverParametersList( - solver_type = solver_type_list[solver], - status = self._status + solver_type=solver_type_list[solver], + status=self._status ) self._parameters[solver] = new self._status.modified() diff --git a/src/Model/Saved.py b/src/Model/Saved.py index 60013cded8abc606f0f62b8d810bbb17c77cef62..52bd07809ba6d31f1ea24a53049284bc89c11f65 100644 --- a/src/Model/Saved.py +++ b/src/Model/Saved.py @@ -20,6 +20,7 @@ import logging logger = logging.getLogger() + class SavedStatus(object): def __init__(self): super(SavedStatus, self).__init__() diff --git a/src/Model/SedimentLayer/SedimentLayer.py b/src/Model/SedimentLayer/SedimentLayer.py index 1438dfa7474bac469109553e57830d8c1821b957..69e140bf5c37246ec34068720e729c0ef6d96568 100644 --- a/src/Model/SedimentLayer/SedimentLayer.py +++ b/src/Model/SedimentLayer/SedimentLayer.py @@ -5,16 +5,17 @@ from tools import trace, timer from Model.Tools.PamhyrDB import SQLSubModel from Model.Except import NotImplementedMethodeError + class Layer(SQLSubModel): _sub_classes = [] _id_cnt = 0 def __init__(self, - id:int = -1, name:str = "", - type = "", - height = 0.0, d50 = 0.0, sigma = 0.0, - critical_constraint = 0.0, - sl = None, status = None): + id: int = -1, name: str = "", + type="", + height=0.0, d50=0.0, sigma=0.0, + critical_constraint=0.0, + sl=None, status=None): super(Layer, self).__init__() self._status = status @@ -111,7 +112,7 @@ class Layer(SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = [] sl = data["sl"] @@ -128,24 +129,24 @@ class Layer(SQLSubModel): ind = row[1] layer = cls( - id = row[0], name = row[2], - type = row[3], height = row[4], - d50 = row[5], sigma = row[6], - critical_constraint = row[7], - sl = sl, status = data['status'] + id=row[0], name=row[2], + type=row[3], height=row[4], + d50=row[5], sigma=row[6], + critical_constraint=row[7], + sl=sl, status=data['status'] ) new[ind] = layer return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ind = data["ind"] sl = data["sl"] sql = ( "INSERT INTO " + - "sedimentary_layer_layer(id, ind, name, type, height, d50, sigma, critical_constraint, sl) "+ + "sedimentary_layer_layer(id, ind, name, type, height, d50, sigma, critical_constraint, sl) " + "VALUES (" + f"{self.id}, {ind}, '{self._sql_format(self._name)}', " + f"'{self._sql_format(self._type)}', {self._height}, " + @@ -162,9 +163,9 @@ class SedimentLayer(SQLSubModel): _sub_classes = [Layer] _id_cnt = 0 - def __init__(self, id:int = -1, - name:str = "", comment:str = "", - status = None): + def __init__(self, id: int = -1, + name: str = "", comment: str = "", + status=None): super(SedimentLayer, self).__init__() self._status = status @@ -242,7 +243,7 @@ class SedimentLayer(SQLSubModel): return True @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): new = [] table = execute( @@ -252,10 +253,10 @@ class SedimentLayer(SQLSubModel): for row in table: sl = cls( - id = row[0], - name = row[1], - comment = row[2], - status = data['status'] + id=row[0], + name=row[1], + comment=row[2], + status=data['status'] ) data["sl"] = sl.id @@ -265,7 +266,7 @@ class SedimentLayer(SQLSubModel): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): if data is None: data = {} @@ -298,7 +299,7 @@ class SedimentLayer(SQLSubModel): self._status.modified() def new(self, index): - n = Layer(sl=self, status = self._status) + n = Layer(sl=self, status=self._status) self.insert(index, n) self._status.modified() return n diff --git a/src/Model/SedimentLayer/SedimentLayerList.py b/src/Model/SedimentLayer/SedimentLayerList.py index 53a1a8fdf47618b02a4ae5bfda2021063caad910..d7be0a1ede82160b165da8d73fcb097a8e812c9e 100644 --- a/src/Model/SedimentLayer/SedimentLayerList.py +++ b/src/Model/SedimentLayer/SedimentLayerList.py @@ -6,18 +6,19 @@ from Model.Except import NotImplementedMethodeError from Model.Tools.PamhyrList import PamhyrModelList from Model.SedimentLayer.SedimentLayer import SedimentLayer + class SedimentLayerList(PamhyrModelList): _sub_classes = [SedimentLayer] @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data["status"]) + def _sql_load(cls, execute, data=None): + new = cls(status=data["status"]) new._lst = SedimentLayer._sql_load(execute, data) return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): ok = True # Delete previous data @@ -34,7 +35,7 @@ class SedimentLayerList(PamhyrModelList): return self.lst def new(self, index): - n = SedimentLayer(status = self._status) + n = SedimentLayer(status=self._status) self.insert(index, n) self._status.modified() return n diff --git a/src/Model/Serializable.py b/src/Model/Serializable.py index 0c0834483cb32fd6566dd870b6bfcfa5a4756e8c..fb4ea11de90f5155d20a4f9e1515073354c67703 100644 --- a/src/Model/Serializable.py +++ b/src/Model/Serializable.py @@ -18,6 +18,7 @@ import pickle + class Serializable(): def __init__(self): return diff --git a/src/Model/SolverParameters/SolverParametersList.py b/src/Model/SolverParameters/SolverParametersList.py index ce7ade982ebb48d5e5d091ec989a377ee5f7ef81..41906ef031b83e09046210b0bb56eeb0e8ec384f 100644 --- a/src/Model/SolverParameters/SolverParametersList.py +++ b/src/Model/SolverParameters/SolverParametersList.py @@ -22,10 +22,11 @@ from Solver.Solvers import solver_type_list from Model.Tools.PamhyrList import PamhyrModelList + class Parameter(): def __init__(self, - name = "", value = "", - status = None): + name="", value="", + status=None): self._status = status self._name = name @@ -57,14 +58,15 @@ class Parameter(): @classmethod def from_tuple(cls, data, status): - new = cls(status = status) + new = cls(status=status) new["name"] = data[0] new["value"] = data[1] return new + class SolverParametersList(PamhyrModelList): - def __init__(self, solver_type = None, status = None): + def __init__(self, solver_type=None, status=None): super(SolverParametersList, self).__init__() self._status = status @@ -76,7 +78,6 @@ class SolverParametersList(PamhyrModelList): ) ) - @classmethod def _sql_create(cls, execute): execute(""" @@ -97,35 +98,38 @@ class SolverParametersList(PamhyrModelList): if major == minor == "0": if int(release) < 3: - execute(f"UPDATE solver_parameter SET name='mage_implicitation' WHERE name='mage_implication'") - execute(f"UPDATE solver_parameter SET name='mage_iteration_type' WHERE name='mage_iter_type'") + execute( + f"UPDATE solver_parameter SET name='mage_implicitation' WHERE name='mage_implication'") + execute( + f"UPDATE solver_parameter SET name='mage_iteration_type' WHERE name='mage_iter_type'") if int(release) < 4: - solvers = execute("SELECT DISTINCT solver FROM solver_parameter") + solvers = execute( + "SELECT DISTINCT solver FROM solver_parameter") for solver in solvers: if solver != "mage8": continue data = execute("SELECT ind, name, value " + - "FROM solver_parameter "+ - f"WHERE solver = '{solver}' " + - "ORDER BY ind ACS") + "FROM solver_parameter " + + f"WHERE solver = '{solver}' " + + "ORDER BY ind ACS") execute( "DELETE FROM solver_parameter " + f"WHERE solver = '{solver}'" ) - insert = lambda name, value, ind: execute( - "INSERT INTO " + - "solver_parameter(ind, name, value, solver) "+ - "VALUES (" + - f"{ind}, " + - f"'{cls._sql_format(name)}', " + - f"'{cls._sql_format(value)}', " + - f"'{cls._sql_format(solver)}'" + - ")" + def insert(name, value, ind): return execute( + "INSERT INTO " + + "solver_parameter(ind, name, value, solver) " + + "VALUES (" + + f"{ind}, " + + f"'{cls._sql_format(name)}', " + + f"'{cls._sql_format(value)}', " + + f"'{cls._sql_format(solver)}'" + + ")" ) ind = 0 @@ -156,7 +160,7 @@ class SolverParametersList(PamhyrModelList): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): status = data["status"] solvers = execute("SELECT DISTINCT solver FROM solver_parameter") new = {} @@ -167,7 +171,7 @@ class SolverParametersList(PamhyrModelList): continue st = solver_type_list[solver] - n = cls(solver_type = st, status = status) + n = cls(solver_type=st, status=status) table = execute( "SELECT ind, name, value " + @@ -186,7 +190,7 @@ class SolverParametersList(PamhyrModelList): return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): t = self._solver._type execute( "DELETE FROM solver_parameter " + @@ -197,7 +201,7 @@ class SolverParametersList(PamhyrModelList): for param in self._lst: sql = ( "INSERT INTO " + - "solver_parameter(ind, name, value, solver) "+ + "solver_parameter(ind, name, value, solver) " + "VALUES (" + f"{ind}, " + f"'{self._sql_format(param.name)}', " + @@ -241,15 +245,15 @@ class SolverParametersList(PamhyrModelList): self._lst.append( Parameter( - name = key, - value = value, - status = self._status + name=key, + value=value, + status=self._status ) ) self._status.modified() def new(self, index): - n = Parameter(status = self._status) + n = Parameter(status=self._status) self._lst.insert(index, n) self._status.modified() return n diff --git a/src/Model/Stricklers/Stricklers.py b/src/Model/Stricklers/Stricklers.py index e18fd01d35cf2ffba5eaf41bc83e503c18dcb6ad..f1c35119d9d5d420e8c52c53b96fb333d60db425 100644 --- a/src/Model/Stricklers/Stricklers.py +++ b/src/Model/Stricklers/Stricklers.py @@ -20,16 +20,17 @@ from tools import trace, timer from Model.Tools.PamhyrDB import SQLSubModel + class Stricklers(SQLSubModel): _id_cnt = 0 _sub_classes = [] - def __init__(self, id:int = -1, - name:str = "", - comment:str = "", - minor:float = 35.0, - medium:float = 15.0, - status = None): + def __init__(self, id: int = -1, + name: str = "", + comment: str = "", + minor: float = 35.0, + medium: float = 15.0, + status=None): super(Stricklers, self).__init__() self._status = status @@ -46,7 +47,6 @@ class Stricklers(SQLSubModel): self._minor = minor self._medium = medium - @classmethod def _sql_create(cls, execute): execute(""" @@ -66,7 +66,7 @@ class Stricklers(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): stricklers = [] status = data["status"] @@ -86,21 +86,21 @@ class Stricklers(SQLSubModel): medium = row[4] new = cls( - id = id, - name = name, - comment = comment, - minor = minor, medium = medium, - status = status + id=id, + name=name, + comment=comment, + minor=minor, medium=medium, + status=status ) stricklers.append(new) return stricklers - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): sql = ( "INSERT INTO " + - "stricklers(id, name, comment, minor, medium) "+ + "stricklers(id, name, comment, minor, medium) " + "VALUES (" + f"{self.id}, " + f"'{self._sql_format(self.name)}', " + diff --git a/src/Model/Stricklers/StricklersList.py b/src/Model/Stricklers/StricklersList.py index f1d36fa7fe1e7fc906ef2e61e5a9cf6b6a15df02..c8c2a925b3525474f6f1b7b5b57b7405a65d23d3 100644 --- a/src/Model/Stricklers/StricklersList.py +++ b/src/Model/Stricklers/StricklersList.py @@ -22,6 +22,7 @@ from Model.Saved import SavedStatus from Model.Tools.PamhyrList import PamhyrModelList from Model.Stricklers.Stricklers import Stricklers + class StricklersList(PamhyrModelList): _sub_classes = [ Stricklers, @@ -36,17 +37,17 @@ class StricklersList(PamhyrModelList): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): - new = cls(status = data["status"]) + def _sql_load(cls, execute, data=None): + new = cls(status=data["status"]) new._lst = Stricklers._sql_load( execute, - data = data + data=data ) return new - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): execute("DELETE FROM stricklers") objs = self._lst @@ -57,20 +58,20 @@ class StricklersList(PamhyrModelList): return self.lst def new(self, index): - s = Stricklers(status = self._status) + s = Stricklers(status=self._status) self.insert(index, s) return s @timer - def sort(self, reverse:bool = False, key=None): - f = lambda st: st.name + def sort(self, reverse: bool = False, key=None): + def f(st): return st.name if key is not None: f = key self._lst = sorted( self._lst, - key = f, - reverse = reverse, + key=f, + reverse=reverse, ) if self._status is not None: diff --git a/src/Model/Study.py b/src/Model/Study.py index f022a195c495cc4a8b39ce2cc07c576499e010bc..597b68e2d389f83f543bff18f2cbcc8a857da500 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -33,12 +33,13 @@ from Checker.Study import * logger = logging.getLogger() + class Study(SQLModel): _sub_classes = [ River, ] - def __init__(self, filename = None, init_new = True): + def __init__(self, filename=None, init_new=True): # Metadata self._version = "0.0.4" self.creation_date = datetime.now() @@ -46,7 +47,7 @@ class Study(SQLModel): self.last_save_date = datetime.now() self._filename = filename - super(Study, self).__init__(filename = filename) + super(Study, self).__init__(filename=filename) self.status = SavedStatus() @@ -59,9 +60,9 @@ class Study(SQLModel): if init_new: # Study data - self._river = River(status = self.status) + self._river = River(status=self.status) else: - self._init_db_file(filename, is_new = False) + self._init_db_file(filename, is_new=False) self._old_save_id = 0 @@ -128,7 +129,7 @@ class Study(SQLModel): @filename.setter def filename(self, filename): self._filename = str(filename) - self._init_db_file(filename, is_new = True) + self._init_db_file(filename, is_new=True) self.status.modified() @property @@ -139,7 +140,7 @@ class Study(SQLModel): self._time_system = "time" self.status.modified() - def use_date(self, date:datetime): + def use_date(self, date: datetime): self._time_system = "date" self._date = date self.status.modified() @@ -158,7 +159,7 @@ class Study(SQLModel): # return cls() @classmethod - def new(cls, name, description, date = None): + def new(cls, name, description, date=None): me = cls() me.name = name me.description = description @@ -178,14 +179,16 @@ class Study(SQLModel): def _create(self): # Info (metadata) - self.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + self.execute( + "CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") self.execute( f"INSERT INTO info VALUES ('version', '{self._sql_format(self._version)}')", - commit = True + commit=True ) self.execute("INSERT INTO info VALUES ('name', '')") self.execute("INSERT INTO info VALUES ('description', '')") - self.execute(f"INSERT INTO info VALUES ('time_system', '{self._time_system}')") + self.execute( + f"INSERT INTO info VALUES ('time_system', '{self._time_system}')") self.execute( f"INSERT INTO info VALUES ('date', " + "'{self._date.timestamp()}')" @@ -213,7 +216,8 @@ class Study(SQLModel): logger.info("Update database") if self._update_submodel(version[0]): - self.execute(f"UPDATE info SET value='{self._version}' WHERE key='version'") + self.execute( + f"UPDATE info SET value='{self._version}' WHERE key='version'") return True logger.info("TODO: update failed") @@ -221,42 +225,52 @@ class Study(SQLModel): @classmethod def _load(cls, filename): - new = cls(init_new = False, filename = filename) + new = cls(init_new=False, filename=filename) # TODO: Load metadata new.name = new.execute("SELECT value FROM info WHERE key='name'")[0] - new.description = new.execute("SELECT value FROM info WHERE key='description'")[0] - new._time_system = new.execute("SELECT value FROM info WHERE key='time_system'")[0] + new.description = new.execute( + "SELECT value FROM info WHERE key='description'")[0] + new._time_system = new.execute( + "SELECT value FROM info WHERE key='time_system'")[0] new._date = datetime.fromtimestamp( float(new.execute("SELECT value FROM info WHERE key='date'")[0]) ) new.creation_date = datetime.fromtimestamp( - float(new.execute("SELECT value FROM info WHERE key='creation_date'")[0]) + float(new.execute( + "SELECT value FROM info WHERE key='creation_date'")[0]) ) new.last_save_date = datetime.fromtimestamp( - float(new.execute("SELECT value FROM info WHERE key='last_save_date'")[0]) + float(new.execute( + "SELECT value FROM info WHERE key='last_save_date'")[0]) ) # Load river data new._river = River._sql_load( lambda sql: new.execute( sql, - fetch_one = False, - commit = True + fetch_one=False, + commit=True ), - data = {"status": new.status} + data={"status": new.status} ) return new def _save(self): - self.execute(f"UPDATE info SET value='{self._sql_format(self.name)}' WHERE key='name'") - self.execute(f"UPDATE info SET value='{self._sql_format(self.description)}' WHERE key='description'") - self.execute(f"UPDATE info SET value='{self._time_system}' WHERE key='time_system'") - self.execute(f"UPDATE info SET value='{timestamp(self._date)}' WHERE key='date'") - self.execute(f"UPDATE info SET value='{timestamp(self.creation_date)}' WHERE key='creation_date'") - self.execute(f"UPDATE info SET value='{timestamp(self.last_save_date)}' WHERE key='last_save_date'") + self.execute( + f"UPDATE info SET value='{self._sql_format(self.name)}' WHERE key='name'") + self.execute( + f"UPDATE info SET value='{self._sql_format(self.description)}' WHERE key='description'") + self.execute( + f"UPDATE info SET value='{self._time_system}' WHERE key='time_system'") + self.execute( + f"UPDATE info SET value='{timestamp(self._date)}' WHERE key='date'") + self.execute( + f"UPDATE info SET value='{timestamp(self.creation_date)}' WHERE key='creation_date'") + self.execute( + f"UPDATE info SET value='{timestamp(self.last_save_date)}' WHERE key='last_save_date'") self._save_submodel([self._river]) self.commit() diff --git a/src/Model/Tools/PamhyrDB.py b/src/Model/Tools/PamhyrDB.py index 73174f9483d2cbed1583ebde553457aa032c3979..803cd05ca98da17d78ada1d587bb6735389a75d7 100644 --- a/src/Model/Tools/PamhyrDB.py +++ b/src/Model/Tools/PamhyrDB.py @@ -28,10 +28,12 @@ from Model.Except import NotImplementedMethodeError logger = logging.getLogger() # Top level model class + + class SQLModel(SQL): _sub_classes = [] - def _init_db_file(self, db, is_new = True): + def _init_db_file(self, db, is_new=True): exists = Path(db).exists() if exists and is_new: @@ -48,15 +50,14 @@ class SQLModel(SQL): self._update() # Update db scheme if necessary # self._load() # Load data - - def __init__(self, filename = None): + def __init__(self, filename=None): self._db = None def _create_submodel(self): - fn = lambda sql: self.execute( + def fn(sql): return self.execute( sql, - fetch_one = False, - commit = False + fetch_one=False, + commit=False ) for cls in self._sub_classes: @@ -69,10 +70,10 @@ class SQLModel(SQL): raise NotImplementedMethodeError(self, self._create) def _update_submodel(self, version): - fn = lambda sql: self.execute( + def fn(sql): return self.execute( sql, - fetch_one = False, - commit = False + fetch_one=False, + commit=False ) ok = True @@ -85,11 +86,11 @@ class SQLModel(SQL): def _update(self): raise NotImplementedMethodeError(self, self._update) - def _save_submodel(self, objs, data = None): - fn = lambda sql: self.execute( + def _save_submodel(self, objs, data=None): + def fn(sql): return self.execute( sql, - fetch_one = False, - commit = False + fetch_one=False, + commit=False ) ok = True @@ -103,10 +104,12 @@ class SQLModel(SQL): raise NotImplementedMethodeError(self, self._save) @classmethod - def _load(cls, filename = None): + def _load(cls, filename=None): raise NotImplementedMethodeError(cls, cls._load) # Sub model class + + class SQLSubModel(object): _sub_classes = [] @@ -154,7 +157,7 @@ class SQLSubModel(object): raise NotImplementedMethodeError(cls, cls._sql_update) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): """Load instance of this class from SQL data base Args: @@ -166,11 +169,11 @@ class SQLSubModel(object): """ raise NotImplementedMethodeError(cls, cls._sql_load) - def _save_submodel(self, execute, objs, data = None): + def _save_submodel(self, execute, objs, data=None): for o in objs: - o._sql_save(execute, data = data) + o._sql_save(execute, data=data) - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): """Save class data to data base Args: diff --git a/src/Model/Tools/PamhyrDict.py b/src/Model/Tools/PamhyrDict.py index f16525168f4d6455fb6ab1ef58d016c77c064086..5d7dc537928762780b1d5309e059409ad6f26e79 100644 --- a/src/Model/Tools/PamhyrDict.py +++ b/src/Model/Tools/PamhyrDict.py @@ -30,7 +30,7 @@ logger = logging.getLogger() class PamhyrModelDict(SQLSubModel): _sub_classes = [] - def __init__(self, status = None): + def __init__(self, status=None): super(PamhyrModelDict, self).__init__() self._status = status @@ -46,10 +46,10 @@ class PamhyrModelDict(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): raise NotImplementedMethodeError(cls, cls._sql_load) - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): raise NotImplementedMethodeError(self, self._sql_save) def __len__(self): diff --git a/src/Model/Tools/PamhyrList.py b/src/Model/Tools/PamhyrList.py index 9a83bdb07e87566ea9c1042e2aea9d2d2648c82f..57160e774fda4999314d4e2055949d60584a10d9 100644 --- a/src/Model/Tools/PamhyrList.py +++ b/src/Model/Tools/PamhyrList.py @@ -26,11 +26,12 @@ from Model.Except import NotImplementedMethodeError logger = logging.getLogger() + class PamhyrModelList(SQLSubModel): _sub_classes = [ ] - def __init__(self, status = None): + def __init__(self, status=None): super(PamhyrModelList, self).__init__() self._status = status @@ -49,10 +50,10 @@ class PamhyrModelList(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): raise NotImplementedMethodeError(cls, cls._sql_load) - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): raise NotImplementedMethodeError(self, self._sql_save) ################ @@ -142,7 +143,7 @@ class PamhyrModelListWithTab(SQLSubModel): _sub_classes = [ ] - def __init__(self, status = None): + def __init__(self, status=None): super(PamhyrModelListWithTab, self).__init__() self._status = status @@ -163,10 +164,10 @@ class PamhyrModelListWithTab(SQLSubModel): return cls._update_submodel(execute, version) @classmethod - def _sql_load(cls, execute, data = None): + def _sql_load(cls, execute, data=None): raise NotImplementedMethodeError(cls, cls._sql_load) - def _sql_save(self, execute, data = None): + def _sql_save(self, execute, data=None): raise NotImplementedMethodeError(self, self._sql_save) ################ diff --git a/src/Scripts/AScript.py b/src/Scripts/AScript.py index 032f9560b7663c4761a5c53698a51cfec9545bea..66037418e57c3fa18794965d443c559b7d17ae3c 100644 --- a/src/Scripts/AScript.py +++ b/src/Scripts/AScript.py @@ -18,6 +18,7 @@ from Model.Except import NotImplementedMethodeError + class AScript(object): name = "" description = "" diff --git a/src/Scripts/P3DST.py b/src/Scripts/P3DST.py index 55a9992876927ea46647144612ddb393c770ed08..62d0f88f1b15a4afab8a27fcbd3cca1d26bb5ca2 100644 --- a/src/Scripts/P3DST.py +++ b/src/Scripts/P3DST.py @@ -29,6 +29,7 @@ from Model.Geometry.Reach import Reach logger = logging.getLogger() + class Script3DST(AScript): name = "3DST" description = "Display a 3D plot of a river reach from ST file" @@ -82,7 +83,7 @@ class Script3DST(AScript): try: status = SavedStatus() - my_reach = Reach(status = status) + my_reach = Reach(status=status) my_reach.import_geometry(st_file) my_reach.compute_guidelines() diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py index d71f0472e29ca64437b738b6577a822249005d84..1b070f39eb5bd126c7a159cacb1cda72b97a6f8a 100644 --- a/src/Solver/ASolver.py +++ b/src/Solver/ASolver.py @@ -37,12 +37,14 @@ from Model.Results.River.River import River, Reach, Profile logger = logging.getLogger() + class STATUS(Enum): NOT_LAUNCHED = -1 STOPED = 0 RUNNING = 1 PAUSED = 5 + class AbstractSolver(object): _type = "" @@ -155,7 +157,7 @@ class AbstractSolver(object): # Export # ########## - def export(self, study, repertory, qlog = None): + def export(self, study, repertory, qlog=None): raise NotImplementedMethodeError(self, self.export) def cmd_args(self, study): @@ -190,8 +192,8 @@ class AbstractSolver(object): ########### @timer - def results(self, study, repertory, qlog = None): - results = Results(study = study) + def results(self, study, repertory, qlog=None): + results = Results(study=study) return results ####### @@ -206,7 +208,7 @@ class AbstractSolver(object): ) ) - def _format_command(self, study, cmd, path = ""): + def _format_command(self, study, cmd, path=""): """Format command line Args: @@ -328,14 +330,15 @@ class AbstractSolver(object): self._run_next(study) - def run(self, study, process = None, output_queue = None): + def run(self, study, process=None, output_queue=None): if process is not None: self._process = process if output_queue is not None: self._output = output_queue self._process.readyRead.connect(self._data_ready) - self._process.finished.connect(lambda c, s: self._finished(study, c, s)) + self._process.finished.connect( + lambda c, s: self._finished(study, c, s)) self._runs = [ self.run_input_data_fomater, @@ -356,7 +359,7 @@ class AbstractSolver(object): self._status = STATUS.STOPED return True - def start(self, study, process = None): + def start(self, study, process=None): if _signal: # Solver is PAUSED, so continue execution if self._status == STATUS.PAUSED: diff --git a/src/Solver/GenericSolver.py b/src/Solver/GenericSolver.py index 9e588baed0c84620af4d8dde35f56a4716e6eace..bc5a9f6b5dc428ccdd0438a4c6ae174919c93e9d 100644 --- a/src/Solver/GenericSolver.py +++ b/src/Solver/GenericSolver.py @@ -20,6 +20,7 @@ from Solver.ASolver import ( AbstractSolver, STATUS ) + class GenericSolver(AbstractSolver): _type = "generic" diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 1cad3f684e0b5fac5dcb527240fb19dcbc355796..15d3979b8bd52a9127d7389720a8775a6da3e0ac 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -30,6 +30,7 @@ from Model.Results.River.River import River, Reach, Profile logger = logging.getLogger() + def mage_file_open(filepath, mode): f = open(filepath, mode) @@ -39,6 +40,7 @@ def mage_file_open(filepath, mode): return f + class Mage(AbstractSolver): _type = "mage" @@ -51,7 +53,6 @@ class Mage(AbstractSolver): self._cmd_solver = "@path @input -o @output" self._cmd_output = "" - @classmethod def default_parameters(cls): lst = super(Mage, cls).default_parameters() @@ -87,8 +88,8 @@ class Mage(AbstractSolver): @classmethod def checkers(cls): lst = [ - MageNetworkGraphChecker(connectivity = True), - MageNetworkGraphChecker(connectivity = False) + MageNetworkGraphChecker(connectivity=True), + MageNetworkGraphChecker(connectivity=False) ] return lst @@ -210,7 +211,7 @@ class Mage(AbstractSolver): v1 = d[1] if t in ["HYD", "QSO", "LIM"]: - v0 /= 60 # Convert first column to minute + v0 /= 60 # Convert first column to minute f.write(f"{v0:10}{v1:10}\n") @@ -391,13 +392,12 @@ class Mage(AbstractSolver): if EXT in ["GRA"]: f.write(f"{EXT} {file}\n") - @timer - def export(self, study, repertory, qlog = None): + def export(self, study, repertory, qlog=None): self._study = study name = study.name.replace(" ", "_") - self._export_ST(study, repertory, qlog, name = name) + self._export_ST(study, repertory, qlog, name=name) return True @@ -405,12 +405,12 @@ class Mage(AbstractSolver): # RESULTS # ########### - def read_bin(self, study, repertory, results, qlog = None, name="0"): + def read_bin(self, study, repertory, results, qlog=None, name="0"): return @timer - def results(self, study, repertory, qlog = None, name="0"): - results = Results(study = study) + def results(self, study, repertory, qlog=None, name="0"): + results = Results(study=study) self.read_bin(study, repertory, results, qlog, name=name) @@ -420,6 +420,7 @@ class Mage(AbstractSolver): # MAGE 7 # ########## + class Mage7(Mage): _type = "mage7" @@ -438,6 +439,7 @@ class Mage7(Mage): # MAGE 8 # ########## + class Mage8(Mage): _type = "mage8" @@ -484,7 +486,7 @@ class Mage8(Mage): return l @timer - def _export_PAR(self, study, repertory, qlog = None, name = "0"): + def _export_PAR(self, study, repertory, qlog=None, name="0"): files = [] if qlog is not None: @@ -511,7 +513,7 @@ class Mage8(Mage): return files @timer - def _export_NET(self, study, repertory, qlog = None, name="0"): + def _export_NET(self, study, repertory, qlog=None, name="0"): files = [] if qlog is not None: @@ -579,9 +581,8 @@ class Mage8(Mage): return files - @timer - def export(self, study, repertory, qlog = None, name="0"): + def export(self, study, repertory, qlog=None, name="0"): self._study = study name = study.name.replace(" ", "_") @@ -590,7 +591,8 @@ class Mage8(Mage): files = self._export_ST(study, repertory, qlog, name=name) files = files + self._export_PAR(study, repertory, qlog, name=name) files = files + self._export_NET(study, repertory, qlog, name=name) - files = files + self._export_bound_cond(study, repertory, qlog, name=name) + files = files + \ + self._export_bound_cond(study, repertory, qlog, name=name) files = files + self._export_RUG(study, repertory, qlog, name=name) files = files + self._export_INI(study, repertory, qlog, name=name) self._export_REP(study, repertory, files, qlog, name=name) @@ -602,17 +604,22 @@ class Mage8(Mage): ########### @timer - def read_bin(self, study, repertory, results, qlog = None, name="0"): + def read_bin(self, study, repertory, results, qlog=None, name="0"): fname = os.path.join(repertory, f"{name}.BIN") logger.info(f"read_bin: Start reading '{fname}' ...") with mage_file_open(fname, "r") as f: - newline = lambda: np.fromfile(f, dtype=np.int32, count=1) - endline = lambda: np.fromfile(f, dtype=np.int32, count=1) + def newline(): return np.fromfile(f, dtype=np.int32, count=1) + def endline(): return np.fromfile(f, dtype=np.int32, count=1) + + def read_int(size): return np.fromfile( + f, dtype=np.int32, count=size) + + def read_float(size): return np.fromfile( + f, dtype=np.float32, count=size) - read_int = lambda size: np.fromfile(f, dtype=np.int32, count=size) - read_float = lambda size: np.fromfile(f, dtype=np.float32, count=size) - read_float64 = lambda size: np.fromfile(f, dtype=np.float64, count=size) + def read_float64(size): return np.fromfile( + f, dtype=np.float64, count=size) # Meta data (1st line) newline() @@ -686,7 +693,7 @@ class Mage8(Mage): # Data newline() - ip_to_r = lambda i: iprofiles[ + def ip_to_r(i): return iprofiles[ next( filter( lambda k: k[0] <= i <= k[1], @@ -694,14 +701,15 @@ class Mage8(Mage): ) ) ] - ip_to_ri = lambda r, i: i - reach_offset[r] + def ip_to_ri(r, i): return i - reach_offset[r] ts = set() end = False while not end: n = read_int(1)[0] timestamp = read_float64(1)[0] - key = bytearray(np.fromfile(f, dtype=np.byte, count=1)).decode() + key = bytearray(np.fromfile( + f, dtype=np.byte, count=1)).decode() data = read_float(n) logger.debug(f"read_bin: timestamp = {timestamp} sec") @@ -725,7 +733,7 @@ class Mage8(Mage): logger.info(f"read_bin: ... end with {len(ts)} timestamp read") @timer - def read_gra(self, study, repertory, results, qlog = None, name="0"): + def read_gra(self, study, repertory, results, qlog=None, name="0"): if not study.river.has_sediment(): return @@ -733,12 +741,17 @@ class Mage8(Mage): logger.info(f"read_gra: Start reading '{fname}' ...") with mage_file_open(fname, "r") as f: - newline = lambda: np.fromfile(f, dtype=np.int32, count=1) - endline = lambda: np.fromfile(f, dtype=np.int32, count=1) + def newline(): return np.fromfile(f, dtype=np.int32, count=1) + def endline(): return np.fromfile(f, dtype=np.int32, count=1) + + def read_int(size): return np.fromfile( + f, dtype=np.int32, count=size) + + def read_float(size): return np.fromfile( + f, dtype=np.float32, count=size) - read_int = lambda size: np.fromfile(f, dtype=np.int32, count=size) - read_float = lambda size: np.fromfile(f, dtype=np.float32, count=size) - read_float64 = lambda size: np.fromfile(f, dtype=np.float64, count=size) + def read_float64(size): return np.fromfile( + f, dtype=np.float64, count=size) # Meta data (1st line) newline() @@ -810,7 +823,7 @@ class Mage8(Mage): endline() # Data - ip_to_r = lambda i: iprofiles[ + def ip_to_r(i): return iprofiles[ next( filter( lambda k: k[0] <= i <= k[1], @@ -818,7 +831,7 @@ class Mage8(Mage): ) ) ] - ip_to_ri = lambda r, i: i - reach_offset[r] + def ip_to_ri(r, i): return i - reach_offset[r] ts = set() ind = 0 @@ -878,11 +891,11 @@ class Mage8(Mage): logger.info(f"read_gra: ... end with {len(ts)} timestamp read") @timer - def results(self, study, repertory, qlog = None): + def results(self, study, repertory, qlog=None): self._study = study name = study.name.replace(" ", "_") - results = super(Mage8, self).results(study, repertory, qlog, name = name) - self.read_gra(study, repertory, results, qlog, name = name) + results = super(Mage8, self).results(study, repertory, qlog, name=name) + self.read_gra(study, repertory, results, qlog, name=name) return results diff --git a/src/View/About/Window.py b/src/View/About/Window.py index 218869b5fc7d87595dcadc8b018660f6edfcb8e3..7798729e3c0406e4483450f22d3e34434460e80d 100644 --- a/src/View/About/Window.py +++ b/src/View/About/Window.py @@ -26,6 +26,7 @@ from PyQt5.QtCore import QCoreApplication _translate = QCoreApplication.translate logger = logging.getLogger() + class AboutWindow(PamhyrDialog): _pamhyr_ui = "about" _pamhyr_name = "About" @@ -38,13 +39,13 @@ class AboutWindow(PamhyrDialog): ) ) - def __init__(self, study = None, config = None, parent=None): + def __init__(self, study=None, config=None, parent=None): super(AboutWindow, self).__init__( - title = _translate("About", "About"), - study = study, - config = config, - options = [], - parent = parent + title=_translate("About", "About"), + study=study, + config=config, + options=[], + parent=parent ) # Version diff --git a/src/View/BoundaryCondition/Edit/Plot.py b/src/View/BoundaryCondition/Edit/Plot.py index e5e80c1e329322ca059d505beec1f47bda383275..3c1b880837ac41d5d7a51a4464fbdf7236521467 100644 --- a/src/View/BoundaryCondition/Edit/Plot.py +++ b/src/View/BoundaryCondition/Edit/Plot.py @@ -33,16 +33,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class Plot(PamhyrPlot): - def __init__(self, mode = "time", data=None, + def __init__(self, mode="time", data=None, trad=None, canvas=None, toolbar=None, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._table_headers = self._trad.get_dict("table_headers") @@ -72,8 +73,8 @@ class Plot(PamhyrPlot): map( lambda v: str( datetime.fromtimestamp(v[0]) - t0 - ).split(",")[0]\ - .replace("days", _translate("BoundaryCondition", "days"))\ + ).split(",")[0] + .replace("days", _translate("BoundaryCondition", "days")) .replace("day", _translate("BoundaryCondition", "day")), fx ) @@ -88,7 +89,6 @@ class Plot(PamhyrPlot): self.canvas.axes.set_xticks(ticks=xx, labels=xt, rotation=45) - @timer def draw(self): self.canvas.axes.cla() @@ -122,7 +122,7 @@ class Plot(PamhyrPlot): self.canvas.axes.autoscale_view(True, True, True) self.canvas.figure.tight_layout() self.canvas.figure.canvas.draw_idle() - #self.toolbar.update() + # self.toolbar.update() self._init = True diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index 7f86fc8aefeff783aeceef2c11e0b0817624d38a..75e6813136b350c138b41b9cd4530800ce6c7aaf 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -51,6 +51,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class TableModel(PamhyrTableModel): def data(self, index, role): if role == Qt.TextAlignmentRole: diff --git a/src/View/BoundaryCondition/Edit/UndoCommand.py b/src/View/BoundaryCondition/Edit/UndoCommand.py index b30331a167039f8a201f017460b4984e1ddd42f2..14c2b98265e74f444d1d9dd3a468ab3cbcb9602d 100644 --- a/src/View/BoundaryCondition/Edit/UndoCommand.py +++ b/src/View/BoundaryCondition/Edit/UndoCommand.py @@ -29,6 +29,7 @@ from Model.BoundaryCondition.BoundaryCondition import BoundaryCondition logger = logging.getLogger() + class SetDataCommand(QUndoCommand): def __init__(self, data, index, column, new_value): QUndoCommand.__init__(self) @@ -46,6 +47,7 @@ class SetDataCommand(QUndoCommand): def redo(self): self._data._set_i_c_v(self._index, self._column, self._new) + class SetMetaDataCommand(QUndoCommand): def __init__(self, data, column, new_value): QUndoCommand.__init__(self) @@ -89,6 +91,7 @@ class AddCommand(QUndoCommand): else: self._data.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, data, rows): QUndoCommand.__init__(self) @@ -108,6 +111,7 @@ class DelCommand(QUndoCommand): def redo(self): self._data.delete_i(self._rows) + class SortCommand(QUndoCommand): def __init__(self, data, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/BoundaryCondition/Edit/Window.py b/src/View/BoundaryCondition/Edit/Window.py index 5661d6bc63c7226c02287273bb263a98dfb7228a..162459ed5769efe7bbe4d9b609193172f6d37369 100644 --- a/src/View/BoundaryCondition/Edit/Window.py +++ b/src/View/BoundaryCondition/Edit/Window.py @@ -53,6 +53,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class WD50Sigma(PamhyrWidget): _pamhyr_ui = "d50sigma" @@ -94,6 +95,7 @@ class WD50Sigma(PamhyrWidget): def valueChangedSigma(self, value): self.sigmaChanged.emit(value) + class EditBoundaryConditionWindow(PamhyrWindow): _pamhyr_ui = "EditBoundaryConditions" _pamhyr_name = "Edit Boundary Conditions" @@ -115,11 +117,11 @@ class EditBoundaryConditionWindow(PamhyrWindow): ) super(EditBoundaryConditionWindow, self).__init__( - title = name, - study = study, - config = config, - trad = trad, - parent = parent + title=name, + study=study, + config=config, + trad=trad, + parent=parent ) self.setup_table() @@ -132,7 +134,7 @@ class EditBoundaryConditionWindow(PamhyrWindow): if self._is_solid: layout = self.find(QVBoxLayout, "verticalLayout_table") - self._d50sigma = WD50Sigma(parent = self) + self._d50sigma = WD50Sigma(parent=self) layout.addWidget(self._d50sigma) self._d50sigma.set_d50(self._data.d50) @@ -145,22 +147,22 @@ class EditBoundaryConditionWindow(PamhyrWindow): headers[h] = table_headers[h] self._delegate_time = PamhyrExTimeDelegate( - data = self._data, - mode = self._study.time_system, - parent = self + data=self._data, + mode=self._study.time_system, + parent=self ) table = self.find(QTableView, "tableView") self._table = TableModel( - table_view = table, - table_headers = headers, - editable_headers = self._data.header, - delegates = { + table_view=table, + table_headers=headers, + editable_headers=self._data.header, + delegates={ "time": self._delegate_time, }, - data = self._data, - undo = self._undo_stack, - opt_data = self._study.time_system + data=self._data, + undo=self._undo_stack, + opt_data=self._study.time_system ) table.setModel(self._table) @@ -178,11 +180,11 @@ class EditBoundaryConditionWindow(PamhyrWindow): self.verticalLayout.addWidget(self.canvas) self.plot = Plot( - canvas = self.canvas, - data = self._data, - mode = self._study.time_system, - trad = self._trad, - toolbar = self.toolbar, + canvas=self.canvas, + data=self._data, + mode=self._study.time_system, + trad=self._trad, + toolbar=self.toolbar, ) self.plot.draw() @@ -270,7 +272,6 @@ class EditBoundaryConditionWindow(PamhyrWindow): self._table.move_down(row) self.plot.update() - def _copy(self): rows = self.index_selected_rows() diff --git a/src/View/BoundaryCondition/Edit/translate.py b/src/View/BoundaryCondition/Edit/translate.py index d97ac6dee075c1002737b24a8be39f9feff2fa6f..9f54ce2a0dd97caa14e625d5a4b281a6fc141045 100644 --- a/src/View/BoundaryCondition/Edit/translate.py +++ b/src/View/BoundaryCondition/Edit/translate.py @@ -24,6 +24,7 @@ from View.BoundaryCondition.translate import BCTranslate _translate = QCoreApplication.translate + class BCETranslate(BCTranslate): def __init__(self): super(BCETranslate, self).__init__() diff --git a/src/View/BoundaryCondition/Table.py b/src/View/BoundaryCondition/Table.py index 77141dff82ad74f5236b0f1e6a5a905aabde3beb..3a5afd8fbe9be31e5a299bc04536c5f2d6e6fb4b 100644 --- a/src/View/BoundaryCondition/Table.py +++ b/src/View/BoundaryCondition/Table.py @@ -52,6 +52,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class ComboBoxDelegate(QItemDelegate): def __init__(self, data=None, mode="type", tab="", trad=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) @@ -157,20 +158,21 @@ class TableModel(PamhyrTableModel): if self._headers[column] == "name": self._undo.push( SetNameCommand( - self._lst, self._tab,row, value + self._lst, self._tab, row, value ) ) elif self._headers[column] == "type": - key = next(k for k, v in self._long_types.items() if v == value) + key = next(k for k, v in self._long_types.items() + if v == value) self._undo.push( SetTypeCommand( - self._lst, self._tab,row, BC_types[key] + self._lst, self._tab, row, BC_types[key] ) ) elif self._headers[column] == "node": self._undo.push( SetNodeCommand( - self._lst, self._tab,row, self._data.node(value) + self._lst, self._tab, row, self._data.node(value) ) ) except Exception as e: @@ -185,7 +187,7 @@ class TableModel(PamhyrTableModel): self._undo.push( AddCommand( - self._lst, self._tab,row + self._lst, self._tab, row ) ) diff --git a/src/View/BoundaryCondition/UndoCommand.py b/src/View/BoundaryCondition/UndoCommand.py index bbf8cb2c64ca351622b272af5ad94f8a10aa693f..356d854b064be4159ce394e37b55f553667fca2e 100644 --- a/src/View/BoundaryCondition/UndoCommand.py +++ b/src/View/BoundaryCondition/UndoCommand.py @@ -26,6 +26,7 @@ from PyQt5.QtWidgets import ( from Model.BoundaryCondition.BoundaryCondition import BoundaryCondition from Model.BoundaryCondition.BoundaryConditionList import BoundaryConditionList + class SetNameCommand(QUndoCommand): def __init__(self, bcs, tab, index, new_value): QUndoCommand.__init__(self) @@ -42,6 +43,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._bcs.get(self._tab, self._index).name = self._new + class SetNodeCommand(QUndoCommand): def __init__(self, bcs, tab, index, node): QUndoCommand.__init__(self) @@ -58,6 +60,7 @@ class SetNodeCommand(QUndoCommand): def redo(self): self._bcs.get(self._tab, self._index).node = self._new + class SetTypeCommand(QUndoCommand): def __init__(self, bcs, tab, index, _type): QUndoCommand.__init__(self) @@ -76,6 +79,7 @@ class SetTypeCommand(QUndoCommand): def redo(self): self._bcs.set(self._tab, self._index, self._new) + class AddCommand(QUndoCommand): def __init__(self, bcs, tab, index): QUndoCommand.__init__(self) @@ -94,6 +98,7 @@ class AddCommand(QUndoCommand): else: self._bcs.insert(self._tab, self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, bcs, tab, rows): QUndoCommand.__init__(self) @@ -114,6 +119,7 @@ class DelCommand(QUndoCommand): def redo(self): self._bcs.delete_i(self._tab, self._rows) + class SortCommand(QUndoCommand): def __init__(self, bcs, tab, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/BoundaryCondition/Window.py b/src/View/BoundaryCondition/Window.py index 99758c5ac9de410f5186f63f703050e600c0e72b..9d30532e8edc04dd0e86e4ded3c9bb6397c3bdd4 100644 --- a/src/View/BoundaryCondition/Window.py +++ b/src/View/BoundaryCondition/Window.py @@ -62,6 +62,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class BoundaryConditionWindow(PamhyrWindow): _pamhyr_ui = "BoundaryConditions" _pamhyr_name = "Boundary conditions" @@ -70,10 +71,10 @@ class BoundaryConditionWindow(PamhyrWindow): name = self._pamhyr_name + " - " + study.name super(BoundaryConditionWindow, self).__init__( - title = name, - study = study, - config = config, - trad = BCTranslate(), + title=name, + study=study, + config=config, + trad=BCTranslate(), parent=parent ) @@ -90,33 +91,33 @@ class BoundaryConditionWindow(PamhyrWindow): for t in ["liquid", "solid", "suspenssion"]: self._delegate_type = ComboBoxDelegate( - trad = self._trad, - data = self._study.river, - mode = "type", - tab = t, + trad=self._trad, + data=self._study.river, + mode="type", + tab=t, parent=self ) self._delegate_node = ComboBoxDelegate( - trad = self._trad, - data = self._study.river, - mode = "node", - tab = t, + trad=self._trad, + data=self._study.river, + mode="node", + tab=t, parent=self ) table = self.find(QTableView, f"tableView_{t}") self._table[t] = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = ["name", "type", "node"], - delegates = { + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=["name", "type", "node"], + delegates={ "type": self._delegate_type, "node": self._delegate_node, }, - trad = self._trad, - data = self._study.river, - undo = self._undo_stack, - opt_data = t, + trad=self._trad, + data=self._study.river, + undo=self._undo_stack, + opt_data=t, ) table.setModel(self._table[t]) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -126,7 +127,7 @@ class BoundaryConditionWindow(PamhyrWindow): def setup_graph(self): self.graph_widget = GraphWidget( self._study.river, - min_size=None, size=(200,200), + min_size=None, size=(200, 200), only_display=True, parent=self ) @@ -215,7 +216,7 @@ class BoundaryConditionWindow(PamhyrWindow): for row in rows: win = self.sub_win_filter_first( "Edit boundary condition", - contain = [f"({self._bcs.get(tab, row).id})"] + contain=[f"({self._bcs.get(tab, row).id})"] ) if win is None: diff --git a/src/View/BoundaryCondition/translate.py b/src/View/BoundaryCondition/translate.py index 00077f5fa50dbee4797bae49cb4266507f0264c0..d16c644ef4f089790ccb4530efca8bd11ae92426 100644 --- a/src/View/BoundaryCondition/translate.py +++ b/src/View/BoundaryCondition/translate.py @@ -37,6 +37,7 @@ BC_types = { "SL": Solid, } + class BCTranslate(PamhyrTranslate): def __init__(self): super(BCTranslate, self).__init__() diff --git a/src/View/CheckList/Translate.py b/src/View/CheckList/Translate.py index b3ce856d4c1caee1c559f25d4376d9d859191deb..d046365dfaf296e55f14a759ca89ea50c014e9ce 100644 --- a/src/View/CheckList/Translate.py +++ b/src/View/CheckList/Translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class CheckListTranslate(PamhyrTranslate): def __init__(self): super(CheckListTranslate, self).__init__() diff --git a/src/View/CheckList/Window.py b/src/View/CheckList/Window.py index baf99983604b277cf024c9a469df04244a4c7bb7..1e8fb5d445cda7fa80c008df0093eefaaa8c6bf3 100644 --- a/src/View/CheckList/Window.py +++ b/src/View/CheckList/Window.py @@ -44,13 +44,14 @@ from View.CheckList.Translate import CheckListTranslate _translate = QCoreApplication.translate + class CheckListWindow(PamhyrWindow): _pamhyr_ui = "CheckList" _pamhyr_name = "Check list" signalStatus = pyqtSignal(str) - def __init__(self, autorun:bool=True, + def __init__(self, autorun: bool = True, study=None, config=None, solver=None, parent=None): self._autorun = autorun @@ -59,12 +60,12 @@ class CheckListWindow(PamhyrWindow): name = self._pamhyr_name + " - " + study.name super(CheckListWindow, self).__init__( - title = name, - study = study, - config = config, - trad = CheckListTranslate(), - options = [], - parent = parent + title=name, + study=study, + config=config, + trad=CheckListTranslate(), + options=[], + parent=parent ) self._checker_list = ( @@ -81,9 +82,9 @@ class CheckListWindow(PamhyrWindow): def setup_table(self): table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - data = self._checker_list, + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + data=self._checker_list, ) def setup_progress_bar(self): @@ -120,7 +121,8 @@ class CheckListWindow(PamhyrWindow): def _compute_status(self): ok = len(list(filter(lambda c: c.is_ok(), self._checker_list))) - warning = len(list(filter(lambda c: c.is_warning(), self._checker_list))) + warning = len( + list(filter(lambda c: c.is_warning(), self._checker_list))) error = len(list(filter(lambda c: c.is_error(), self._checker_list))) return ok, warning, error @@ -164,7 +166,7 @@ class CheckListWindow(PamhyrWindow): self.update_statusbar() - def update(self, key:str): + def update(self, key: str): if key == "start": self.start_compute() self.info_compute("Starting ...") @@ -187,4 +189,4 @@ class CheckListWindow(PamhyrWindow): def accept(self): self._parent.solver_log(self._solver) - #self.end() + # self.end() diff --git a/src/View/CheckList/Worker.py b/src/View/CheckList/Worker.py index aacd9393380cff9c28cc6f2f5555142628bb5191..834d8975377fec865e18275e3abda28bff3a4392 100644 --- a/src/View/CheckList/Worker.py +++ b/src/View/CheckList/Worker.py @@ -22,6 +22,7 @@ from PyQt5.QtCore import ( Qt, QObject, pyqtSlot, pyqtSignal ) + class Worker(QObject): signalStatus = pyqtSignal(str) diff --git a/src/View/Configure/Solver/Window.py b/src/View/Configure/Solver/Window.py index 369ff40ad28272803d4f280344a951ff47990b2c..893def20f0b4e070cf4970505245e304400312c4 100644 --- a/src/View/Configure/Solver/Window.py +++ b/src/View/Configure/Solver/Window.py @@ -24,6 +24,7 @@ from PyQt5.QtWidgets import ( QPushButton, ) + class ConfigureSolverWindow(PamhyrDialog): _pamhyr_ui = "ConfigureAddSolverDialog" _pamhyr_name = "Add/Edit Solver" @@ -35,9 +36,9 @@ class ConfigureSolverWindow(PamhyrDialog): name = "Add a new Solver" super(ConfigureSolverWindow, self).__init__( - title = name, - config = config, - options = [], + title=name, + config=config, + options=[], parent=parent ) @@ -67,16 +68,19 @@ class ConfigureSolverWindow(PamhyrDialog): # File button buttons = { "pushButton_input": (lambda: self.file_dialog( - select_file = True, - callback = lambda f: self.set_line_edit_text("lineEdit_input", f[0]) + select_file=True, + callback=lambda f: self.set_line_edit_text( + "lineEdit_input", f[0]) )), "pushButton_solver": (lambda: self.file_dialog( - select_file = True, - callback = lambda f: self.set_line_edit_text("lineEdit_solver", f[0]) + select_file=True, + callback=lambda f: self.set_line_edit_text( + "lineEdit_solver", f[0]) )), "pushButton_output": (lambda: self.file_dialog( - select_file = True, - callback = lambda f: self.set_line_edit_text("lineEdit_output", f[0]) + select_file=True, + callback=lambda f: self.set_line_edit_text( + "lineEdit_output", f[0]) )), } @@ -92,9 +96,11 @@ class ConfigureSolverWindow(PamhyrDialog): else: # Build new solver from selected type stype = self.get_combobox_text("comboBox_solver") - self.data = solver_type_list[stype](self.get_line_edit_text("lineEdit_name")) + self.data = solver_type_list[stype]( + self.get_line_edit_text("lineEdit_name")) - self.data.description = self.get_line_edit_text("lineEdit_description") + self.data.description = self.get_line_edit_text( + "lineEdit_description") self.data.set_input( self.get_line_edit_text("lineEdit_input"), self.get_line_edit_text("lineEdit_input_cmd") diff --git a/src/View/Configure/Translate.py b/src/View/Configure/Translate.py index bed6a713efa9891698874cf902a6f2c0f882faf2..5355d8a590b29d9301cd98cd57a6ce3735871301 100644 --- a/src/View/Configure/Translate.py +++ b/src/View/Configure/Translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class ConfigureTranslate(PamhyrTranslate): def __init__(self): super(ConfigureTranslate, self).__init__() diff --git a/src/View/Configure/Window.py b/src/View/Configure/Window.py index b07304fa151648760f87d65869695ee76897b60d..f380e86800d6566c0cafc91cecbe7d5e9b5ab73b 100644 --- a/src/View/Configure/Window.py +++ b/src/View/Configure/Window.py @@ -49,6 +49,7 @@ from Solver.Solvers import solver_long_name logger = logging.getLogger() + class SolverTableModel(PamhyrTableModel): def data(self, index, role): if role != Qt.ItemDataRole.DisplayRole: @@ -83,10 +84,10 @@ class ConfigureWindow(PamhyrDialog): config = Config() super(ConfigureWindow, self).__init__( - title = self._pamhyr_name, - config = config, - trad = ConfigureTranslate(), - options = [], + title=self._pamhyr_name, + config=config, + trad=ConfigureTranslate(), + options=[], parent=parent ) @@ -101,38 +102,43 @@ class ConfigureWindow(PamhyrDialog): def setup_solver(self): table = self.find(QTableView, "tableView_solver") self.solver_table_model = SolverTableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - data = self._config.solvers + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + data=self._config.solvers ) def setup_stricklers(self): table = self.find(QTableView, f"tableView_stricklers") self._stricklers = deepcopy(self._config.stricklers) self._stricklers_table = TableModel( - table_view = table, - table_headers = self._trad_stricklers.get_dict("table_headers"), - editable_headers = ["name", "comment", "minor", "medium"], - data = self._stricklers, - undo = self._undo_stack, + table_view=table, + table_headers=self._trad_stricklers.get_dict("table_headers"), + editable_headers=["name", "comment", "minor", "medium"], + data=self._stricklers, + undo=self._undo_stack, ) def setup_data(self): # Meshing_Tool - self.set_line_edit_text("lineEdit_meshing_tool", self._config.meshing_tool) + self.set_line_edit_text("lineEdit_meshing_tool", + self._config.meshing_tool) # Const self.set_line_edit_text("lineEdit_segment", str(self._config.segment)) - self.set_line_edit_text("lineEdit_max_listing", str(self._config.max_listing)) + self.set_line_edit_text("lineEdit_max_listing", + str(self._config.max_listing)) # Backup self.set_check_box("checkBox_backup", self._config.backup_enable) - self.set_line_edit_text("lineEdit_backup_path", self._config.backup_path) - self.set_time_edit("timeEdit_backup_frequence", self._config.backup_frequence) + self.set_line_edit_text("lineEdit_backup_path", + self._config.backup_path) + self.set_time_edit("timeEdit_backup_frequence", + self._config.backup_frequence) self.set_spin_box("spinBox_backup_max", self._config.backup_max) # Editor - self.set_line_edit_text("lineEdit_editor_cmd", str(self._config.editor)) + self.set_line_edit_text("lineEdit_editor_cmd", + str(self._config.editor)) # Language languages = Config.languages() @@ -157,14 +163,14 @@ class ConfigureWindow(PamhyrDialog): "pushButton_stricklers_sort": self.sort_stricklers, # Others "pushButton_backup_path": lambda: self.file_dialog( - select_file = False, - callback = lambda f: self.set_line_edit_text( + select_file=False, + callback=lambda f: self.set_line_edit_text( "lineEdit_backup_path", f[0] ) ), - "pushButton_meshing_tool" : lambda: self.file_dialog( - select_file = True, - callback = lambda f: self.set_line_edit_text( + "pushButton_meshing_tool": lambda: self.file_dialog( + select_file=True, + callback=lambda f: self.set_line_edit_text( "lineEdit_meshing_tool", f[0] ) ), @@ -178,16 +184,20 @@ class ConfigureWindow(PamhyrDialog): self._config.solvers = self.solver_table_model._data.copy() # Meshing_Tool - self._config.meshing_tool = self.get_line_edit_text("lineEdit_meshing_tool") + self._config.meshing_tool = self.get_line_edit_text( + "lineEdit_meshing_tool") # Const self._config.segment = self.get_line_edit_text("lineEdit_segment") - self._config.max_listing = self.get_line_edit_text("lineEdit_max_listing") + self._config.max_listing = self.get_line_edit_text( + "lineEdit_max_listing") # Backup self._config.backup_enable = self.get_check_box("checkBox_backup") - self._config.backup_path = self.get_line_edit_text("lineEdit_backup_path") - self._config.backup_frequence = self.get_time_edit("timeEdit_backup_frequence") + self._config.backup_path = self.get_line_edit_text( + "lineEdit_backup_path") + self._config.backup_frequence = self.get_time_edit( + "timeEdit_backup_frequence") self._config.backup_max = self.get_spin_box("spinBox_backup_max") # Stricklers @@ -197,7 +207,8 @@ class ConfigureWindow(PamhyrDialog): self._config.editor = self.get_line_edit_text("lineEdit_editor_cmd") # Language - self._config.lang = Config.languages()[self.get_combobox_text("comboBox_language")] + self._config.lang = Config.languages( + )[self.get_combobox_text("comboBox_language")] self.end() @@ -219,7 +230,8 @@ class ConfigureWindow(PamhyrDialog): # Solvers def edit_solver(self): - indexes = self.find(QTableView, "tableView_solver").selectionModel().selectedRows() + indexes = self.find( + QTableView, "tableView_solver").selectionModel().selectedRows() for index in indexes: self.edit_solver = ConfigureSolverWindow( data=self.solver_table_model._data[index.row()], @@ -227,7 +239,8 @@ class ConfigureWindow(PamhyrDialog): parent=self ) if self.edit_solver.exec_(): - self.solver_table_model.change_solver(self.edit_solver.data, index) + self.solver_table_model.change_solver( + self.edit_solver.data, index) def add_solver(self): dialog_solver = ConfigureSolverWindow(parent=self) @@ -235,7 +248,8 @@ class ConfigureWindow(PamhyrDialog): self.solver_table_model.add_solver(dialog_solver.data) def remove_solver(self): - indices = self.find(QTableView, "tableView_solver").selectionModel().selectedRows() + indices = self.find( + QTableView, "tableView_solver").selectionModel().selectedRows() for index in sorted(indices): self.solver_table_model.removeRow(index) diff --git a/src/View/Debug/Window.py b/src/View/Debug/Window.py index 2e99dadb6e57a44491ac8249bfc825c53756b5b7..4d60a396e3eca310909b06aec84533503339d7b4 100644 --- a/src/View/Debug/Window.py +++ b/src/View/Debug/Window.py @@ -44,6 +44,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class ReplWindow(PamhyrWindow): _pamhyr_ui = "DebugRepl" _pamhyr_name = "Debug REPL" @@ -51,11 +52,11 @@ class ReplWindow(PamhyrWindow): def __init__(self, study=None, config=None, solver=None, parent=None): super(ReplWindow, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, - options = [], - parent = parent + title=self._pamhyr_name, + study=study, + config=config, + options=[], + parent=parent ) self.__debug_exec_result__ = None @@ -75,12 +76,14 @@ class ReplWindow(PamhyrWindow): def history_up(self): if self._history_ind < len(self._history): self._history_ind += 1 - self.set_plaintext_edit_text("plainTextEdit", self._history[-self._history_ind]) + self.set_plaintext_edit_text( + "plainTextEdit", self._history[-self._history_ind]) def history_down(self): if self._history_ind > 0: self._history_ind -= 1 - self.set_plaintext_edit_text("plainTextEdit", self._history[-self._history_ind]) + self.set_plaintext_edit_text( + "plainTextEdit", self._history[-self._history_ind]) else: self.set_plaintext_edit_text("plainTextEdit", "") diff --git a/src/View/Doc/Window.py b/src/View/Doc/Window.py index e197e5669280ba570bc938314aeeb3b84bc16b75..9f64da52ee1818a0187226040f17f4f9c62c6ed9 100644 --- a/src/View/Doc/Window.py +++ b/src/View/Doc/Window.py @@ -16,7 +16,8 @@ # -*- coding: utf-8 -*- -import os, sys +import os +import sys import logging import subprocess @@ -55,11 +56,11 @@ class DocWindow(PamhyrWindow): study=None, config=None, parent=None): super(DocWindow, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, - options = [], - parent = parent + title=self._pamhyr_name, + study=study, + config=config, + options=[], + parent=parent ) self._path = self._path_file(filename) @@ -70,11 +71,11 @@ class DocWindow(PamhyrWindow): def setup_connection(self): self.findChild(QAction, "action_back").triggered.connect(self.back) - self.findChild(QAction, "action_forward").triggered.connect(self.forward) + self.findChild(QAction, "action_forward").triggered.connect( + self.forward) self.findChild(QAction, "action_open").triggered.connect(self.open) - def setup_web_engine(self): vl = self.find(QVBoxLayout, "verticalLayout") self._web_view = QWebEngineView() @@ -97,5 +98,5 @@ class DocWindow(PamhyrWindow): self._web_view.forward() def open(self): - url = QUrl(f"file://{self._path}") - QDesktopServices.openUrl(url) + url = QUrl(f"file://{self._path}") + QDesktopServices.openUrl(url) diff --git a/src/View/DummyWindow.py b/src/View/DummyWindow.py index 768d6fbc7ce67427df18ed3671c13009f6d3132a..aaab178c4969d103299b49e82509f3c88024d72f 100644 --- a/src/View/DummyWindow.py +++ b/src/View/DummyWindow.py @@ -18,12 +18,13 @@ from View.Tools.PamhyrWindow import PamhyrWindow + class DummyWindow(PamhyrWindow): __ui = "Dummy" __name = "Pamhyr Dummy Window" def __init__(self, parent=None): super(DummyWindow, self).__init__( - title = self.__name, - parent = parent, + title=self.__name, + parent=parent, ) diff --git a/src/View/Frictions/PlotStricklers.py b/src/View/Frictions/PlotStricklers.py index c6b58dcd40a2287fe9a5cc84e803a992c800ea96..89fe50f876f5ba6e9c8badb93bde836882c856f9 100644 --- a/src/View/Frictions/PlotStricklers.py +++ b/src/View/Frictions/PlotStricklers.py @@ -25,10 +25,11 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate + class PlotStricklers(PamhyrPlot): def draw_frictions(self, frictions, color="r"): lst = frictions - lst.sort(key = lambda s: s.begin_kp) + lst.sort(key=lambda s: s.begin_kp) coef = flatten( map( @@ -57,7 +58,6 @@ class PlotStricklers(PamhyrPlot): color=color, lw=1. ) - @timer def draw(self, highlight=None): self.canvas.axes.cla() @@ -77,7 +77,7 @@ class PlotStricklers(PamhyrPlot): kp = self.data.reach.get_kp() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) frictions = self.data.frictions diff --git a/src/View/Frictions/Table.py b/src/View/Frictions/Table.py index f4ad4f8ee638b0f97234dd1694d232bb8f76d8c0..1cf3dcc16b6444f64bb10bb568d8f8de1b134d64 100644 --- a/src/View/Frictions/Table.py +++ b/src/View/Frictions/Table.py @@ -49,6 +49,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class ComboBoxDelegate(QItemDelegate): def __init__(self, data=None, study=None, mode="stricklers", parent=None): super(ComboBoxDelegate, self).__init__(parent) diff --git a/src/View/Frictions/UndoCommand.py b/src/View/Frictions/UndoCommand.py index ef902f07d55453daf9ae9e6e0830fb6b1915c23c..5aba2a7cf1a1d14476de365fca7c04f626796464 100644 --- a/src/View/Frictions/UndoCommand.py +++ b/src/View/Frictions/UndoCommand.py @@ -26,6 +26,7 @@ from PyQt5.QtWidgets import ( from Model.Friction.Friction import Friction from Model.Friction.FrictionList import FrictionList + class SetNameCommand(QUndoCommand): def __init__(self, frictions, index, new_value): QUndoCommand.__init__(self) @@ -41,6 +42,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._frictions.get(self._index).name = self._new + class SetBeginCommand(QUndoCommand): def __init__(self, frictions, index, new_value): QUndoCommand.__init__(self) @@ -56,6 +58,7 @@ class SetBeginCommand(QUndoCommand): def redo(self): self._frictions.get(self._index).begin_kp = float(self._new) + class SetEndCommand(QUndoCommand): def __init__(self, frictions, index, new_value): QUndoCommand.__init__(self) @@ -87,6 +90,7 @@ class SetBeginStricklerCommand(QUndoCommand): def redo(self): self._frictions.get(self._index).begin_strickler = self._new + class SetEndStricklerCommand(QUndoCommand): def __init__(self, frictions, index, new_value): QUndoCommand.__init__(self) @@ -118,6 +122,7 @@ class SetEdgeCommand(QUndoCommand): def redo(self): self._frictions.get(self._index).edge = self._new + class AddCommand(QUndoCommand): def __init__(self, frictions, index, reach): QUndoCommand.__init__(self) @@ -137,6 +142,7 @@ class AddCommand(QUndoCommand): else: self._frictions.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, frictions, rows): QUndoCommand.__init__(self) @@ -156,6 +162,7 @@ class DelCommand(QUndoCommand): def redo(self): self._frictions.delete_i(self._rows) + class SortCommand(QUndoCommand): def __init__(self, frictions, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/Frictions/Window.py b/src/View/Frictions/Window.py index 74d96b63de240ba78669362023bd5754a193d9a0..2558ab432eafc47a64c1f214afc32ac42fc9482b 100644 --- a/src/View/Frictions/Window.py +++ b/src/View/Frictions/Window.py @@ -56,6 +56,7 @@ from View.Stricklers.Window import StricklersWindow logger = logging.getLogger() + class FrictionsWindow(PamhyrWindow): _pamhyr_ui = "Frictions" _pamhyr_name = "Edit frictions" @@ -75,43 +76,42 @@ class FrictionsWindow(PamhyrWindow): ) super(FrictionsWindow, self).__init__( - title = name, - study = study, - config = config, - trad = FrictionsTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=FrictionsTranslate(), + parent=parent ) self.setup_table() self.setup_graph() self.setup_connections() - def setup_table(self): self._table = {} self._delegate_stricklers = ComboBoxDelegate( - data = self._reach, - study = self._study, - mode = "stricklers", + data=self._reach, + study=self._study, + mode="stricklers", parent=self ) table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = [ + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=[ "name", "begin_kp", "end_kp", "begin_strickler", "end_strickler" ], - delegates = { + delegates={ "begin_strickler": self._delegate_stricklers, "end_strickler": self._delegate_stricklers, }, - data = self._reach, - undo = self._undo_stack, - opt_data = self._study + data=self._reach, + undo=self._undo_stack, + opt_data=self._study ) table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -125,10 +125,10 @@ class FrictionsWindow(PamhyrWindow): self.plot_layout.addWidget(self.canvas) self.plot = PlotKPZ( - canvas = self.canvas, - data = self._reach.reach, - toolbar = None, - display_current = False + canvas=self.canvas, + data=self._reach.reach, + toolbar=None, + display_current=False ) self.plot.draw() @@ -138,18 +138,18 @@ class FrictionsWindow(PamhyrWindow): self.plot_layout_2.addWidget(self.canvas_2) self.plot_2 = PlotStricklers( - canvas = self.canvas_2, - data = self._reach, - toolbar = None + canvas=self.canvas_2, + data=self._reach, + toolbar=None ) self.plot_2.draw() - def setup_connections(self): self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_del").triggered.connect(self.delete) self.find(QAction, "action_sort").triggered.connect(self.sort) - self.find(QAction, "action_edit_stricklers").triggered.connect(self.edit_stricklers) + self.find(QAction, "action_edit_stricklers").triggered.connect( + self.edit_stricklers) table = self.find(QTableView, f"tableView") table.selectionModel()\ @@ -185,17 +185,17 @@ class FrictionsWindow(PamhyrWindow): highlight = (sec.begin_kp, sec.end_kp) self.plot = PlotKPZ( - canvas = self.canvas, - data = reach, - toolbar = None, - display_current = False + canvas=self.canvas, + data=reach, + toolbar=None, + display_current=False ) self.plot.draw(highlight=highlight) self.plot = PlotStricklers( - canvas = self.canvas_2, - data = data, - toolbar = None + canvas=self.canvas_2, + data=data, + toolbar=None ) self.plot.draw(highlight=highlight) @@ -239,14 +239,14 @@ class FrictionsWindow(PamhyrWindow): def edit_stricklers(self): strick = self.sub_win_filter_first( "Stricklers", - contain = [] + contain=[] ) if strick is None: strick = StricklersWindow( - study = self._study, - config = self.parent.conf, - parent = self + study=self._study, + config=self.parent.conf, + parent=self ) strick.show() else: diff --git a/src/View/Frictions/translate.py b/src/View/Frictions/translate.py index 1014d8c1ef4b6c6e8b3fbe364b7b67d95a109742..b341455195ee506ea207465f26bc5ededd0ad544 100644 --- a/src/View/Frictions/translate.py +++ b/src/View/Frictions/translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class FrictionsTranslate(PamhyrTranslate): def __init__(self): super(FrictionsTranslate, self).__init__() diff --git a/src/View/Geometry/PlotAC.py b/src/View/Geometry/PlotAC.py index 974706aa20419210ddf59089ad71b39343ba3ec6..b67394c297a075643d94b66500f018f005684da7 100644 --- a/src/View/Geometry/PlotAC.py +++ b/src/View/Geometry/PlotAC.py @@ -29,15 +29,16 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotAC(PamhyrPlot): def __init__(self, canvas=None, trad=None, data=None, toolbar=None, plot_xy=None, parent=None): super(PlotAC, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self.plot_xy = plot_xy @@ -79,9 +80,11 @@ class PlotAC(PamhyrPlot): ) self.canvas.figure.tight_layout() - label_before_plot_selected = _translate("MainWindow_reach", "Previous cross-section") + label_before_plot_selected = _translate( + "MainWindow_reach", "Previous cross-section") label_plot_selected = _translate("MainWindow_reach", "Cross-section") - label_after_plot_selected = _translate("MainWindow_reach", "Next cross-section") + label_after_plot_selected = _translate( + "MainWindow_reach", "Next cross-section") color_before_plot_selected = "k" # 'grey' color_plot_selected = 'b' color_after_plot_selected = 'm' @@ -133,10 +136,12 @@ class PlotAC(PamhyrPlot): x_gl_complete.append(station[i]) y_gl_complete.append(elevation[i]) - color_scat_complete_gl.append(self.color_complete_gl[lcomplete.index(txt)]) + color_scat_complete_gl.append( + self.color_complete_gl[lcomplete.index(txt)]) elif txt.strip() in self.incomplete_gl: annotate = self.canvas.axes.annotate( - txt, (station[i], elevation[i]), horizontalalignment='left', + txt, (station[i], elevation[i] + ), horizontalalignment='left', verticalalignment='top', annotation_clip=True, fontsize=11, color=self.color_incomplete_gl[ lincomplete.index(txt) @@ -179,9 +184,12 @@ class PlotAC(PamhyrPlot): ) self.canvas.figure.tight_layout() - label_before_plot_selected = _translate("MainWindow_reach", "Profil précédent") - label_plot_selected = _translate("MainWindow_reach", "Profil sélectionné") - label_after_plot_selected = _translate("MainWindow_reach", "Profil suivant") + label_before_plot_selected = _translate( + "MainWindow_reach", "Profil précédent") + label_plot_selected = _translate( + "MainWindow_reach", "Profil sélectionné") + label_after_plot_selected = _translate( + "MainWindow_reach", "Profil suivant") color_before_plot_selected = "k" # 'grey' color_plot_selected = 'b' color_after_plot_selected = 'm' @@ -233,10 +241,12 @@ class PlotAC(PamhyrPlot): x_gl_complete.append(station[i]) y_gl_complete.append(elevation[i]) - color_scat_complete_gl.append(self.color_complete_gl[lcomplete.index(txt)]) + color_scat_complete_gl.append( + self.color_complete_gl[lcomplete.index(txt)]) elif txt.strip() in self.incomplete_gl: annotate = self.canvas.axes.annotate( - txt, (station[i], elevation[i]), horizontalalignment='left', + txt, (station[i], elevation[i] + ), horizontalalignment='left', verticalalignment='top', annotation_clip=True, fontsize=11, color=self.color_incomplete_gl[ lincomplete.index(txt) @@ -311,7 +321,6 @@ class PlotAC(PamhyrPlot): self.canvas.figure.canvas.draw_idle() - @timer def update(self, ind=None): if self._init == False: diff --git a/src/View/Geometry/PlotKPZ.py b/src/View/Geometry/PlotKPZ.py index f216443c411dcbb8196d169b7776b0b3db07251a..983cc79807ce89caf649ac5d446a0bf2a6114226 100644 --- a/src/View/Geometry/PlotKPZ.py +++ b/src/View/Geometry/PlotKPZ.py @@ -29,15 +29,16 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotKPZ(PamhyrPlot): def __init__(self, canvas=None, trad=None, data=None, toolbar=None, display_current=True, parent=None): super(PlotKPZ, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self.display_current = display_current @@ -75,7 +76,7 @@ class PlotKPZ(PamhyrPlot): z_max = self.data.get_z_max() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) self.line_kp_zmin_zmax = self.canvas.axes.vlines( @@ -98,7 +99,7 @@ class PlotKPZ(PamhyrPlot): ) ) - indexes_filter = lambda data: list( + def indexes_filter(data): return list( map( lambda x: x[1], filter( diff --git a/src/View/Geometry/PlotXY.py b/src/View/Geometry/PlotXY.py index ce93fa24ba52f68ede41a70fc61c9dd367a5e29d..8c0edcbedbd2e7f3bed9d792364152451aaf4494 100644 --- a/src/View/Geometry/PlotXY.py +++ b/src/View/Geometry/PlotXY.py @@ -25,15 +25,16 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate + class PlotXY(PamhyrPlot): def __init__(self, canvas=None, trad=None, data=None, toolbar=None, display_current=True, parent=None): super(PlotXY, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self.display_current = display_current @@ -74,7 +75,7 @@ class PlotXY(PamhyrPlot): kp = self.data.get_kp() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) # Draw line for each profile @@ -85,8 +86,8 @@ class PlotXY(PamhyrPlot): markersize=3, marker='+' ) for x, y, kp in zip( - self.data.get_x(), self.data.get_y(), - kp + self.data.get_x(), self.data.get_y(), + kp ) ] diff --git a/src/View/Geometry/Profile/Plot.py b/src/View/Geometry/Profile/Plot.py index 12bb9aee1642622ef34788301c2c257a451a7058..1e997685ec53620717289a7dc7572920ed83902f 100644 --- a/src/View/Geometry/Profile/Plot.py +++ b/src/View/Geometry/Profile/Plot.py @@ -30,15 +30,16 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class Plot(PamhyrPlot): def __init__(self, canvas=None, trad=None, data=None, toolbar=None, table=None, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._table = table @@ -63,7 +64,7 @@ class Plot(PamhyrPlot): y_carto = self.data.y() if (len(x_carto) < 3 or len(y_carto) < 3 or - len(x) < 3): + len(x) < 3): # Noting to do in this case return diff --git a/src/View/Geometry/Profile/Translate.py b/src/View/Geometry/Profile/Translate.py index 148426aa453ccd9191b0ed85bbb654b04d0ff998..27a98c1ed059f5737a40d3639f6fc410083f179b 100644 --- a/src/View/Geometry/Profile/Translate.py +++ b/src/View/Geometry/Profile/Translate.py @@ -23,6 +23,7 @@ from View.Geometry.Translate import GeometryTranslate _translate = QCoreApplication.translate + class GeometryProfileTranslate(GeometryTranslate): def __init__(self): super(GeometryProfileTranslate, self).__init__() diff --git a/src/View/Geometry/Profile/UndoCommand.py b/src/View/Geometry/Profile/UndoCommand.py index 7f0cd1388973ca9461cb1d1b355fdc21193d69f2..c1122a688b7889f563b504a69b0c3e005f9a9ca6 100644 --- a/src/View/Geometry/Profile/UndoCommand.py +++ b/src/View/Geometry/Profile/UndoCommand.py @@ -34,6 +34,7 @@ class SetDataCommand(QUndoCommand): self._old = old_value self._new = self.type(new_value) + class SetXCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = float @@ -45,6 +46,7 @@ class SetXCommand(SetDataCommand): def redo(self): self._profile.point(self._index).x = self._new + class SetYCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = float @@ -56,6 +58,7 @@ class SetYCommand(SetDataCommand): def redo(self): self._profile.point(self._index).y = self._new + class SetZCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = float @@ -67,10 +70,12 @@ class SetZCommand(SetDataCommand): def redo(self): self._profile.point(self._index).z = self._new + class SetNameCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = str - super(SetNameCommand, self).__init__(reach, index, old_value, new_value) + super(SetNameCommand, self).__init__( + reach, index, old_value, new_value) def undo(self): self._profile.point(self._index).name = self._old @@ -96,6 +101,7 @@ class AddCommand(QUndoCommand): else: self._profile.insert_point(self._index, self._point) + class DelCommand(QUndoCommand): def __init__(self, profile, rows): QUndoCommand.__init__(self) @@ -115,6 +121,7 @@ class DelCommand(QUndoCommand): def redo(self): self._profile.delete(self._rows) + class SortCommand(QUndoCommand): def __init__(self, profile, column, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py index e4112f409f74684f428d62d58bb141c9d841c777..dfce6d9d76836e39c7835a38fea8d6b5728f98ad 100644 --- a/src/View/Geometry/Profile/Window.py +++ b/src/View/Geometry/Profile/Window.py @@ -58,11 +58,11 @@ class ProfileWindow(PamhyrWindow): name = f"{self._pamhyr_name} - {self._profile.name} {self._profile.kp}" super(ProfileWindow, self).__init__( - title = name, - study = study, - config = config, - trad = GeometryProfileTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=GeometryProfileTranslate(), + parent=parent ) self.setup_table() @@ -74,11 +74,11 @@ class ProfileWindow(PamhyrWindow): table = self.find(QTableView, "tableView") self._tablemodel = GeometryProfileTableModel( - table_view = table, - table_headers = table_headers, - editable_headers = ["name", "x", "y", "z"], - data = self._profile, - undo = self._undo_stack + table_view=table, + table_headers=table_headers, + editable_headers=["name", "x", "y", "z"], + data=self._profile, + undo=self._undo_stack ) table.setModel(self._tablemodel) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -92,17 +92,17 @@ class ProfileWindow(PamhyrWindow): self._canvas.setObjectName("canvas") self._toolbar = PamhyrPlotToolbar( self._canvas, self, - items = ["home", "zoom", "save", "iso", "back/forward", "move"] + items=["home", "zoom", "save", "iso", "back/forward", "move"] ) self._plot_layout = self.find(QVBoxLayout, "verticalLayout") self._plot_layout.addWidget(self._toolbar) self._plot_layout.addWidget(self._canvas) self._plot = Plot( - canvas = self._canvas, - data = self._profile, - toolbar = self._toolbar, - table = self.find(QTableView, "tableView") + canvas=self._canvas, + data=self._profile, + toolbar=self._toolbar, + table=self.find(QTableView, "tableView") ) self._plot.draw() @@ -134,15 +134,15 @@ class ProfileWindow(PamhyrWindow): def index_selected_row(self): rows = self._tablemodel\ - .selectionModel()\ - .selectedRows() + .selectionModel()\ + .selectedRows() if len(rows) == 0: return 0 return self._tablemodel\ - .selectionModel()\ - .selectedRows()[0]\ - .row() + .selectionModel()\ + .selectedRows()[0]\ + .row() def add(self): table = self.find(QTableView, "tableView") @@ -213,8 +213,8 @@ class ProfileWindow(PamhyrWindow): def copy(self): rows = self._tablemodel\ - .selectionModel()\ - .selectedRows() + .selectionModel()\ + .selectedRows() table = [] table.append(["x", "y", "z", "name"]) diff --git a/src/View/Geometry/Table.py b/src/View/Geometry/Table.py index e9f6eac65de51837016cb56137d65de43de5d7f7..2abb2e7157daa7349c4eac16b31b00e39e3c84f1 100644 --- a/src/View/Geometry/Table.py +++ b/src/View/Geometry/Table.py @@ -66,10 +66,10 @@ class GeometryReachTableModel(PamhyrTableModel): if role == Qt.ForegroundRole and index.column() == 0: name = self._data.profile(index.row()).name\ - .strip()\ - .lower() + .strip()\ + .lower() if (name == "upstream" or name == "up" or - name == _translate("Geometry", "upstream")): + name == _translate("Geometry", "upstream")): return QColor("Green") elif (name == "downstream" or name == "down" or name == _translate("Geometry", "downstream")): @@ -97,7 +97,7 @@ class GeometryReachTableModel(PamhyrTableModel): SetKPCommand( self._data, index.row(), self._data.profile(index.row()).kp, - value + value ) ) except Exception as e: @@ -151,7 +151,6 @@ class GeometryReachTableModel(PamhyrTableModel): self.layoutAboutToBeChanged.emit() self.layoutChanged.emit() - def move_up(self, row, parent=QModelIndex()): if row <= 0: return @@ -199,7 +198,6 @@ class GeometryReachTableModel(PamhyrTableModel): self.layoutAboutToBeChanged.emit() self.layoutChanged.emit() - def paste(self, row, header, data): if row > self._data.number_profiles: return diff --git a/src/View/Geometry/Translate.py b/src/View/Geometry/Translate.py index c583732db9d1b8b0ac4ccc408215a8e64eac567d..8ad7e2de84264e0dc61d09631d65bd11cc96ab15 100644 --- a/src/View/Geometry/Translate.py +++ b/src/View/Geometry/Translate.py @@ -22,13 +22,16 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class GeometryTranslate(PamhyrTranslate): def __init__(self): super(GeometryTranslate, self).__init__() self._dict["open_file"] = _translate("Geometry", "Open a file") - self._dict["file_st"] = _translate("Geometry", "File mage geometry (*.ST)") - self._dict["file_m"] = _translate("Geometry", "File mage meshed geometry (*.M)") + self._dict["file_st"] = _translate( + "Geometry", "File mage geometry (*.ST)") + self._dict["file_m"] = _translate( + "Geometry", "File mage meshed geometry (*.M)") self._dict["file_all"] = _translate("Geometry", "All file (*)") self._dict["reach"] = _translate("Geometry", "reach") diff --git a/src/View/Geometry/UndoCommand.py b/src/View/Geometry/UndoCommand.py index 1df9c58c87cd68a22ae8c90b8691196945b702f6..147ce23104b3564f1e05c1e81f8e5fca52788ec8 100644 --- a/src/View/Geometry/UndoCommand.py +++ b/src/View/Geometry/UndoCommand.py @@ -35,10 +35,12 @@ class SetDataCommand(QUndoCommand): self._old = old_value self._new = self.type(new_value) + class SetNameCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = str - super(SetNameCommand, self).__init__(reach, index, old_value, new_value) + super(SetNameCommand, self).__init__( + reach, index, old_value, new_value) def undo(self): self._reach.profile(self._index).name = self._old @@ -46,6 +48,7 @@ class SetNameCommand(SetDataCommand): def redo(self): self._reach.profile(self._index).name = self._new + class SetKPCommand(SetDataCommand): def __init__(self, reach, index, old_value, new_value): self.type = float @@ -75,6 +78,7 @@ class AddCommand(QUndoCommand): else: self._reach.insert_profile(self._index, self._profile) + class DelCommand(QUndoCommand): def __init__(self, reach, rows): QUndoCommand.__init__(self) @@ -94,6 +98,7 @@ class DelCommand(QUndoCommand): def redo(self): self._reach.delete(self._rows) + class SortCommand(QUndoCommand): def __init__(self, reach, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/Geometry/Window.py b/src/View/Geometry/Window.py index 516bf66f296380a4c283baf827bb0c90263b8fe4..201d6d3eb5823d0a7ded9dd2254ca4e06f892958 100644 --- a/src/View/Geometry/Window.py +++ b/src/View/Geometry/Window.py @@ -66,11 +66,11 @@ class GeometryWindow(PamhyrWindow): name = f"{self._pamhyr_name} - {self._reach.name}" super(GeometryWindow, self).__init__( - title = name, - study = study, - config = config, - trad = GeometryTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=GeometryTranslate(), + parent=parent ) self._tablemodel = None @@ -87,11 +87,11 @@ class GeometryWindow(PamhyrWindow): table = self.find(QTableView, "tableView") self._tablemodel = GeometryReachTableModel( - table_view = table, - table_headers = table_headers, - editable_headers = ["name", "kp"], - data = self._reach, - undo = self._undo_stack + table_view=table, + table_headers=table_headers, + editable_headers=["name", "kp"], + data=self._reach, + undo=self._undo_stack ) table.setModel(self._tablemodel) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -103,7 +103,7 @@ class GeometryWindow(PamhyrWindow): self._canvas_xy.setObjectName("canvas_xy") self._toolbar_xy = PamhyrPlotToolbar( self._canvas_xy, self, - items = ["home", "zoom", "save", "iso", "back/forward", "move"] + items=["home", "zoom", "save", "iso", "back/forward", "move"] ) self._plot_layout_xy = self.find(QVBoxLayout, "verticalLayout") self._plot_layout_xy.addWidget(self._toolbar_xy) @@ -114,7 +114,7 @@ class GeometryWindow(PamhyrWindow): self._canvas_kpc.setObjectName("canvas_kpc") self._toolbar_kpc = PamhyrPlotToolbar( self._canvas_kpc, self, - items = ["home", "zoom", "save", "iso", "back/forward", "move"] + items=["home", "zoom", "save", "iso", "back/forward", "move"] ) self._plot_layout_kpc = self.find(QVBoxLayout, "verticalLayout_2") self._plot_layout_kpc.addWidget(self._toolbar_kpc) @@ -125,7 +125,7 @@ class GeometryWindow(PamhyrWindow): self._canvas_ac.setObjectName("canvas_ac") self._toolbar_ac = PamhyrPlotToolbar( self._canvas_ac, self, - items = ["home", "zoom", "save", "iso", "back/forward", "move"] + items=["home", "zoom", "save", "iso", "back/forward", "move"] ) self._plot_layout_ac = self.find(QVBoxLayout, "verticalLayout_3") self._plot_layout_ac.addWidget(self._toolbar_ac) @@ -169,19 +169,22 @@ class GeometryWindow(PamhyrWindow): self.find(QAction, action)\ .triggered.connect(actions[action]) - self.find(QSlider, "verticalSlider").valueChanged.connect(self.changed_slider_value) - self.find(QPushButton, "pushButton_up").clicked.connect(self.decrement_value_slider) - self.find(QPushButton, "pushButton_down").clicked.connect(self.increment_value_slider) + self.find(QSlider, "verticalSlider").valueChanged.connect( + self.changed_slider_value) + self.find(QPushButton, "pushButton_up").clicked.connect( + self.decrement_value_slider) + self.find(QPushButton, "pushButton_down").clicked.connect( + self.increment_value_slider) # Profile selection when line change in table self.find(QTableView, "tableView").selectionModel()\ .selectionChanged\ .connect(self.select_current_profile) - def import_from_file(self): options = QFileDialog.Options() - settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', ) + settings = QSettings(QSettings.IniFormat, + QSettings.UserScope, 'MyOrg', ) options |= QFileDialog.DontUseNativeDialog file_types = [ @@ -222,13 +225,13 @@ class GeometryWindow(PamhyrWindow): win = self.sub_win_filter_first( "Profile", - contain = [self._reach.name, str(profile.kp)] + contain=[self._reach.name, str(profile.kp)] ) if win is None: win = ProfileWindow( - profile = profile, - parent = self, + profile=profile, + parent=self, ) self._profile_window.append(win) win.show() @@ -250,9 +253,9 @@ class GeometryWindow(PamhyrWindow): self.tableView.model().blockSignals(True) self._plot_xy = PlotXY( - canvas = self._canvas_xy, - data = self._reach, - toolbar = self._toolbar_xy + canvas=self._canvas_xy, + data=self._reach, + toolbar=self._toolbar_xy ) self._plot_xy.draw() @@ -267,9 +270,9 @@ class GeometryWindow(PamhyrWindow): self.tableView.model().blockSignals(True) self._plot_kpc = PlotKPZ( - canvas = self._canvas_kpc, - data = self._reach, - toolbar = self._toolbar_kpc + canvas=self._canvas_kpc, + data=self._reach, + toolbar=self._toolbar_kpc ) self._plot_kpc.draw() @@ -284,10 +287,10 @@ class GeometryWindow(PamhyrWindow): self.tableView.model().blockSignals(True) self._plot_ac = PlotAC( - canvas = self._canvas_ac, - data = self._reach, - toolbar = self._toolbar_ac, - plot_xy = self._plot_xy + canvas=self._canvas_ac, + data=self._reach, + toolbar=self._toolbar_ac, + plot_xy=self._plot_xy ) self._plot_ac.draw() @@ -489,14 +492,16 @@ class GeometryWindow(PamhyrWindow): def export_to_file(self): options = QFileDialog.Options() DEFAULT_DIRECTORY = '/home/' - settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', ) - current_dir = settings.value('current_directory', DEFAULT_DIRECTORY, type=str) + settings = QSettings(QSettings.IniFormat, + QSettings.UserScope, 'MyOrg', ) + current_dir = settings.value( + 'current_directory', DEFAULT_DIRECTORY, type=str) options |= QFileDialog.DontUseNativeDialog filename, filters = QFileDialog.getSaveFileName( self, - filter = self._trad["file_st"] + ";; " + self._trad["file_all"], - options = options + filter=self._trad["file_st"] + ";; " + self._trad["file_all"], + options=options ) current_dir = os.path.split(filename)[0] or DEFAULT_DIRECTORY diff --git a/src/View/InitialConditions/DialogDischarge.py b/src/View/InitialConditions/DialogDischarge.py index 7be75bafe17e745fe6db0339499dd835fed3ee6a..df0461bdb8cef7356ce39be7d3e4744829863ed8 100644 --- a/src/View/InitialConditions/DialogDischarge.py +++ b/src/View/InitialConditions/DialogDischarge.py @@ -31,15 +31,16 @@ from PyQt5.QtWidgets import ( QDoubleSpinBox, ) + class DischargeDialog(PamhyrDialog): _pamhyr_ui = "InitialConditions_Dialog_Generator_Discharge" _pamhyr_name = "Discharge" def __init__(self, title="Discharge", parent=None): super(DischargeDialog, self).__init__( - title = self._pamhyr_name, - options = [], - parent = parent + title=self._pamhyr_name, + options=[], + parent=parent ) self.value = None diff --git a/src/View/InitialConditions/DialogHeight.py b/src/View/InitialConditions/DialogHeight.py index 8a2a3c122667779e78054cd22fed7b32e3accc30..0cd62c88ca6d49026c1dcf908751c53408e08ffd 100644 --- a/src/View/InitialConditions/DialogHeight.py +++ b/src/View/InitialConditions/DialogHeight.py @@ -31,15 +31,16 @@ from PyQt5.QtWidgets import ( QDoubleSpinBox, ) + class HeightDialog(PamhyrDialog): _pamhyr_ui = "InitialConditions_Dialog_Generator_Height" _pamhyr_name = "Height" def __init__(self, parent=None): super(HeightDialog, self).__init__( - title = self._pamhyr_name, - options = [], - parent = parent + title=self._pamhyr_name, + options=[], + parent=parent ) self.value = None diff --git a/src/View/InitialConditions/PlotDKP.py b/src/View/InitialConditions/PlotDKP.py index d604179a0082760d8ae98f0b33b19478b66b5330..ccb774da4f3b5dca225f2fa77ca0001c9697837f 100644 --- a/src/View/InitialConditions/PlotDKP.py +++ b/src/View/InitialConditions/PlotDKP.py @@ -25,6 +25,7 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate + class PlotDKP(PamhyrPlot): @timer def draw(self, highlight=None): @@ -47,7 +48,7 @@ class PlotDKP(PamhyrPlot): z_min = self.data.reach.reach.get_z_min() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) self.line_kp_zmin = self.canvas.axes.plot( diff --git a/src/View/InitialConditions/PlotDischarge.py b/src/View/InitialConditions/PlotDischarge.py index 1ad2a266eb0c9e2a59acb06e07dbc16566596ffb..d2635a6ae80b59aa72f91ceeb246097332ef9f86 100644 --- a/src/View/InitialConditions/PlotDischarge.py +++ b/src/View/InitialConditions/PlotDischarge.py @@ -19,6 +19,7 @@ from tools import timer from View.Tools.PamhyrPlot import PamhyrPlot + class PlotDischarge(PamhyrPlot): @timer def draw(self, highlight=None): @@ -40,7 +41,7 @@ class PlotDischarge(PamhyrPlot): kp = self.data.reach.reach.get_kp() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) if len(self.data) != 0: diff --git a/src/View/InitialConditions/Table.py b/src/View/InitialConditions/Table.py index f7ad1020cb4827d407180e3bcb4000227101d0e1..d9546a4974f814ffe5e690a2900cde141d6e0bfa 100644 --- a/src/View/InitialConditions/Table.py +++ b/src/View/InitialConditions/Table.py @@ -45,6 +45,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class ComboBoxDelegate(QItemDelegate): def __init__(self, reach=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) diff --git a/src/View/InitialConditions/UndoCommand.py b/src/View/InitialConditions/UndoCommand.py index c96f90fa2f759800cf40fb713dc593c4db503610..7205400926af6f71c918c96c35943741a1392430 100644 --- a/src/View/InitialConditions/UndoCommand.py +++ b/src/View/InitialConditions/UndoCommand.py @@ -26,6 +26,7 @@ from PyQt5.QtWidgets import ( from Model.InitialConditions.InitialConditions import InitialConditions from Model.InitialConditions.InitialConditionsDict import InitialConditionsDict + class SetCommand(QUndoCommand): def __init__(self, ics, row, column, new_value): QUndoCommand.__init__(self) @@ -47,6 +48,7 @@ class SetCommand(QUndoCommand): def redo(self): self._ics.get(self._row)[self._column] = self._new + class AddCommand(QUndoCommand): def __init__(self, ics, index): QUndoCommand.__init__(self) @@ -64,6 +66,7 @@ class AddCommand(QUndoCommand): else: self._ics.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, ics, rows): QUndoCommand.__init__(self) @@ -83,6 +86,7 @@ class DelCommand(QUndoCommand): def redo(self): self._ics.delete_i(self._rows) + class SortCommand(QUndoCommand): def __init__(self, ics, _reverse): QUndoCommand.__init__(self) @@ -168,6 +172,7 @@ class DuplicateCommand(QUndoCommand): for ic in self._ics: self._ics.insert(self._rows[0], ic) + class GenerateCommand(QUndoCommand): def __init__(self, ics, generator, param): QUndoCommand.__init__(self) diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py index 90cf8e0889f88ee0b87997b22f8350e041628099..5f270599e93e7758ac0bca0a70ee717f9cb1dda0 100644 --- a/src/View/InitialConditions/Window.py +++ b/src/View/InitialConditions/Window.py @@ -60,6 +60,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class InitialConditionsWindow(PamhyrWindow): _pamhyr_ui = "InitialConditions" _pamhyr_name = "Initial condition" @@ -77,11 +78,11 @@ class InitialConditionsWindow(PamhyrWindow): ) super(InitialConditionsWindow, self).__init__( - title = name, - study = study, - config = config, - trad = ICTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=ICTranslate(), + parent=parent ) self._ics = study.river.initial_conditions.get(self._reach) @@ -95,19 +96,19 @@ class InitialConditionsWindow(PamhyrWindow): def setup_table(self): table = self.find(QTableView, f"tableView") self._delegate_kp = ComboBoxDelegate( - reach = self._reach, - parent = self + reach=self._reach, + parent=self ) self._table = InitialConditionTableModel( - reach = self._reach, - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = ["kp", "discharge", "elevation", "height"], - delegates = {"kp": self._delegate_kp}, - data = self._study, - undo = self._undo_stack, - trad = self._trad + reach=self._reach, + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=["kp", "discharge", "elevation", "height"], + delegates={"kp": self._delegate_kp}, + data=self._study, + undo=self._undo_stack, + trad=self._trad ) table.setModel(self._table) @@ -126,11 +127,11 @@ class InitialConditionsWindow(PamhyrWindow): self.plot_layout_1.addWidget(self.canvas_1) self.plot_1 = PlotDKP( - canvas = self.canvas_1, - data = self._ics, - trad = self._trad, - toolbar = self.toolbar_1, - parent = self + canvas=self.canvas_1, + data=self._ics, + trad=self._trad, + toolbar=self.toolbar_1, + parent=self ) self.plot_1.draw() @@ -144,11 +145,11 @@ class InitialConditionsWindow(PamhyrWindow): self.plot_layout_2.addWidget(self.canvas_2) self.plot_2 = PlotDischarge( - canvas = self.canvas_2, - data = self._ics, - trad = self._trad, - toolbar = self.toolbar_2, - parent = self + canvas=self.canvas_2, + data=self._ics, + trad=self._trad, + toolbar=self.toolbar_2, + parent=self ) self.plot_2.draw() diff --git a/src/View/InitialConditions/translate.py b/src/View/InitialConditions/translate.py index f65306cb4752d969b3bcf8473b1fe1cdc1e0fb32..00cdf362058060f6f3f865e37a87224c2eab28fc 100644 --- a/src/View/InitialConditions/translate.py +++ b/src/View/InitialConditions/translate.py @@ -22,12 +22,15 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class ICTranslate(PamhyrTranslate): def __init__(self): super(ICTranslate, self).__init__() - self._dict["elevation"] = _translate("InitialCondition", "Elevation (m)") - self._dict["discharge"] = _translate("InitialCondition", "Discharge (m³/s)") + self._dict["elevation"] = _translate( + "InitialCondition", "Elevation (m)") + self._dict["discharge"] = _translate( + "InitialCondition", "Discharge (m³/s)") self._dict["kp"] = _translate("InitialCondition", "KP (m)") self._sub_dict["table_headers"] = { diff --git a/src/View/LateralContribution/Edit/Plot.py b/src/View/LateralContribution/Edit/Plot.py index ea1c04547d5ea66d2637a222974d9577be6a586f..336b154b9e940a602e43aa0cdc15a6bf70d6c5b9 100644 --- a/src/View/LateralContribution/Edit/Plot.py +++ b/src/View/LateralContribution/Edit/Plot.py @@ -29,16 +29,17 @@ from View.LateralContribution.Edit.translate import * _translate = QCoreApplication.translate + class Plot(PamhyrPlot): - def __init__(self, mode = "time", data=None, + def __init__(self, mode="time", data=None, canvas=None, trad=None, toolbar=None, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._table_headers = self._trad.get_dict("table_headers") @@ -68,8 +69,8 @@ class Plot(PamhyrPlot): map( lambda v: str( datetime.fromtimestamp(v[0]) - t0 - ).split(",")[0]\ - .replace("days", _translate("LateralContribution", "days"))\ + ).split(",")[0] + .replace("days", _translate("LateralContribution", "days")) .replace("day", _translate("LateralContribution", "day")), fx ) @@ -84,7 +85,6 @@ class Plot(PamhyrPlot): self.canvas.axes.set_xticks(ticks=xx, labels=xt, rotation=45) - @timer def draw(self): self.canvas.axes.cla() @@ -118,7 +118,7 @@ class Plot(PamhyrPlot): self.canvas.axes.autoscale_view(True, True, True) self.canvas.figure.tight_layout() self.canvas.figure.canvas.draw_idle() - #self.toolbar.update() + # self.toolbar.update() self._init = True diff --git a/src/View/LateralContribution/Edit/UndoCommand.py b/src/View/LateralContribution/Edit/UndoCommand.py index 715683c944864f05411cc6c23825c15f8cdc6fa0..780ea8acef83126918b1221e3a3b117c7e6c4719 100644 --- a/src/View/LateralContribution/Edit/UndoCommand.py +++ b/src/View/LateralContribution/Edit/UndoCommand.py @@ -25,6 +25,7 @@ from PyQt5.QtWidgets import ( from Model.LateralContribution.LateralContribution import LateralContribution + class SetDataCommand(QUndoCommand): def __init__(self, data, index, column, new_value): QUndoCommand.__init__(self) @@ -42,6 +43,7 @@ class SetDataCommand(QUndoCommand): def redo(self): self._data._set_i_c_v(self._index, self._column, self._new) + class AddCommand(QUndoCommand): def __init__(self, data, index): QUndoCommand.__init__(self) @@ -59,6 +61,7 @@ class AddCommand(QUndoCommand): else: self._data.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, data, rows): QUndoCommand.__init__(self) @@ -78,6 +81,7 @@ class DelCommand(QUndoCommand): def redo(self): self._data.delete_i(self._rows) + class SortCommand(QUndoCommand): def __init__(self, data, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/LateralContribution/Edit/Window.py b/src/View/LateralContribution/Edit/Window.py index 55f1307fd89976c069a66500ce7fb0831d7a6069..c5d12a380e1598283137d69e3faa46d58ea6ff6f 100644 --- a/src/View/LateralContribution/Edit/Window.py +++ b/src/View/LateralContribution/Edit/Window.py @@ -45,6 +45,7 @@ from View.LateralContribution.Edit.Plot import Plot _translate = QCoreApplication.translate + class EditLateralContributionWindow(PamhyrWindow): _pamhyr_ui = "EditLateralContribution" _pamhyr_name = "Edit lateral contribution" @@ -67,11 +68,11 @@ class EditLateralContributionWindow(PamhyrWindow): ) super(EditLateralContributionWindow, self).__init__( - title = name, - study = study, - config = config, - trad = trad, - parent = parent + title=name, + study=study, + config=config, + trad=trad, + parent=parent ) self.setup_table() @@ -80,9 +81,9 @@ class EditLateralContributionWindow(PamhyrWindow): def setup_table(self): self._delegate_time = PamhyrExTimeDelegate( - data = self._data, - mode = self._study.time_system, - parent = self + data=self._data, + mode=self._study.time_system, + parent=self ) headers = {} @@ -92,16 +93,16 @@ class EditLateralContributionWindow(PamhyrWindow): table = self.find(QTableView, "tableView") self._table = TableModel( - table_view = table, - table_headers = headers, - editable_headers = self._data.header, - delegates = { + table_view=table, + table_headers=headers, + editable_headers=self._data.header, + delegates={ "time": self._delegate_time, }, - data = self._data, - undo = self._undo_stack, - trad = self._trad, - opt_data = self._study.time_system + data=self._data, + undo=self._undo_stack, + trad=self._trad, + opt_data=self._study.time_system ) table.setModel(self._table) @@ -119,12 +120,12 @@ class EditLateralContributionWindow(PamhyrWindow): self.verticalLayout.addWidget(self.canvas) self.plot = Plot( - canvas = self.canvas, - data = self._data, - mode = self._study.time_system, - toolbar = self.toolbar, - trad = self._trad, - parent = self + canvas=self.canvas, + data=self._data, + mode=self._study.time_system, + toolbar=self.toolbar, + trad=self._trad, + parent=self ) self.plot.draw() @@ -156,7 +157,6 @@ class EditLateralContributionWindow(PamhyrWindow): ) ) - def add(self): rows = self.index_selected_rows() if len(self._data) == 0 or len(rows) == 0: diff --git a/src/View/LateralContribution/Edit/translate.py b/src/View/LateralContribution/Edit/translate.py index 247cdc4e08fe67626a8baca04c7dadf32dde194f..9fc86e4df95e6f8f3dd26d574471f2c9e4b6ab15 100644 --- a/src/View/LateralContribution/Edit/translate.py +++ b/src/View/LateralContribution/Edit/translate.py @@ -23,6 +23,7 @@ from View.LateralContribution.translate import LCTranslate _translate = QCoreApplication.translate + class LCETranslate(LCTranslate): def __init__(self): super(LCETranslate, self).__init__() diff --git a/src/View/LateralContribution/Table.py b/src/View/LateralContribution/Table.py index 3c5f5cb79ae314c9bb9b37ddd530f661e2f63584..95d09c9c1093b5c1992bae167528ddda94409ed7 100644 --- a/src/View/LateralContribution/Table.py +++ b/src/View/LateralContribution/Table.py @@ -52,8 +52,9 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class ComboBoxDelegate(QItemDelegate): - def __init__(self, data=None, mode="type", tab="", trad = None, parent=None): + def __init__(self, data=None, mode="type", tab="", trad=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) self._data = data @@ -154,7 +155,8 @@ class TableModel(PamhyrTableModel): ) ) elif self._headers[column] == "type": - key = next(k for k, v in self._long_types.items() if v == value) + key = next(k for k, v in self._long_types.items() + if v == value) self._undo.push( SetTypeCommand( self._lst, self._tab, row, LC_types[key] diff --git a/src/View/LateralContribution/UndoCommand.py b/src/View/LateralContribution/UndoCommand.py index 3d8584368704fe6a23cb4fbaddc58cda6ea0a500..198fd9593ec8d07f0e003edf79d0f42b9dc7aa2a 100644 --- a/src/View/LateralContribution/UndoCommand.py +++ b/src/View/LateralContribution/UndoCommand.py @@ -26,6 +26,7 @@ from PyQt5.QtWidgets import ( from Model.LateralContribution.LateralContribution import LateralContribution from Model.LateralContribution.LateralContributionList import LateralContributionList + class SetNameCommand(QUndoCommand): def __init__(self, lcs, tab, index, new_value): QUndoCommand.__init__(self) @@ -42,6 +43,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._lcs.get(self._tab, self._index).name = self._new + class SetBeginCommand(QUndoCommand): def __init__(self, lcs, tab, index, new_value): QUndoCommand.__init__(self) @@ -58,6 +60,7 @@ class SetBeginCommand(QUndoCommand): def redo(self): self._lcs.get(self._tab, self._index).begin_kp = float(self._new) + class SetEndCommand(QUndoCommand): def __init__(self, lcs, tab, index, new_value): QUndoCommand.__init__(self) @@ -91,6 +94,7 @@ class SetEdgeCommand(QUndoCommand): def redo(self): self._lcs.get(self._tab, self._index).edge = self._new + class SetTypeCommand(QUndoCommand): def __init__(self, lcs, tab, index, _type): QUndoCommand.__init__(self) @@ -109,6 +113,7 @@ class SetTypeCommand(QUndoCommand): def redo(self): self._lcs.set(self._tab, self._index, self._new) + class AddCommand(QUndoCommand): def __init__(self, lcs, tab, index): QUndoCommand.__init__(self) @@ -127,6 +132,7 @@ class AddCommand(QUndoCommand): else: self._lcs.insert(self._tab, self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, lcs, tab, rows): QUndoCommand.__init__(self) @@ -147,6 +153,7 @@ class DelCommand(QUndoCommand): def redo(self): self._lcs.delete_i(self._tab, self._rows) + class SortCommand(QUndoCommand): def __init__(self, lcs, tab, _reverse): QUndoCommand.__init__(self) diff --git a/src/View/LateralContribution/Window.py b/src/View/LateralContribution/Window.py index 467f2a4b40a6f45f826939c91e952555f2563a2a..72ca343de73dab35035590a14c142f4bf78d94ab 100644 --- a/src/View/LateralContribution/Window.py +++ b/src/View/LateralContribution/Window.py @@ -62,6 +62,7 @@ from View.LateralContribution.Edit.Window import EditLateralContributionWindow logger = logging.getLogger() + class LateralContributionWindow(PamhyrWindow): _pamhyr_ui = "LateralContributions" _pamhyr_name = "Lateral contribution" @@ -70,10 +71,10 @@ class LateralContributionWindow(PamhyrWindow): name = self._pamhyr_name + " - " + study.name super(LateralContributionWindow, self).__init__( - title = name, - study = study, - trad = LCTranslate(), - config = config, + title=name, + study=study, + trad=LCTranslate(), + config=config, parent=parent ) @@ -88,33 +89,33 @@ class LateralContributionWindow(PamhyrWindow): for t in ["liquid", "solid", "suspenssion"]: self._delegate_type = ComboBoxDelegate( - data = self._study.river, - mode = "type", - tab = t, - trad = self._trad, + data=self._study.river, + mode="type", + tab=t, + trad=self._trad, parent=self ) self._delegate_edge = ComboBoxDelegate( - data = self._study.river, - mode = "edge", - tab = t, - trad = self._trad, + data=self._study.river, + mode="edge", + tab=t, + trad=self._trad, parent=self ) table = self.find(QTableView, f"tableView_{t}") self._table[t] = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = True, - delegates = { + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=True, + delegates={ "type": self._delegate_type, "edge": self._delegate_edge, }, - data = self._study.river, - undo = self._undo_stack, - trad = self._trad, - opt_data = t, + data=self._study.river, + undo=self._undo_stack, + trad=self._trad, + opt_data=t, ) table.setModel(self._table[t]) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -128,9 +129,9 @@ class LateralContributionWindow(PamhyrWindow): self.plot_layout.addWidget(self.canvas) self.plot = PlotXY( - canvas = self.canvas, - data = None, - toolbar = None, + canvas=self.canvas, + data=None, + toolbar=None, ) def setup_connections(self): @@ -193,9 +194,9 @@ class LateralContributionWindow(PamhyrWindow): highlight = (lc.begin_kp, lc.end_kp) self.plot = PlotXY( - canvas = self.canvas, - data = data, - toolbar = None, + canvas=self.canvas, + data=data, + toolbar=None, ) self.plot.draw(highlight=highlight) @@ -259,7 +260,7 @@ class LateralContributionWindow(PamhyrWindow): for row in rows: win = self.sub_win_filter_first( "Edit lateral contribution", - contain = [f"({self._lcs.get(tab, row).id})"] + contain=[f"({self._lcs.get(tab, row).id})"] ) if win is None: diff --git a/src/View/LateralContribution/translate.py b/src/View/LateralContribution/translate.py index aaf44798ce9c7ba2f04f4949c8f6e9c6c816b26c..f005a063248970b2b0436729820fc798f33addd6 100644 --- a/src/View/LateralContribution/translate.py +++ b/src/View/LateralContribution/translate.py @@ -33,6 +33,7 @@ LC_types = { "EV": Evaporation, } + class LCTranslate(PamhyrTranslate): def __init__(self): super(LCTranslate, self).__init__() diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index cf7e08a76213e4fab32599431f179639c87da8c9..18c4837e038ee86144b3fa143bd2d0aa8d6b2e75 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -16,7 +16,8 @@ # -*- coding: utf-8 -*- -import os, sys +import os +import sys import logging import subprocess from queue import Queue @@ -107,6 +108,7 @@ action = ( no_model_action + model_action + define_model_action ) + class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def __init__(self, conf=None): super(ApplicationWindow, self).__init__() @@ -132,10 +134,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): self.setup_sc() self.setup_connection() self.default_style() - self.setup_debug_mode(init = True) + self.setup_debug_mode(init=True) self.trans = QTranslator(self) - #self.ui.retranslateUi() + # self.ui.retranslateUi() if self.conf.last_study != "" and not self.conf.close_correctly: self.dialog_reopen_study() @@ -153,7 +155,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): title += "Pamhyr2" self.setWindowTitle(title) - def enable_actions(self, action:str, enable:bool): + def enable_actions(self, action: str, enable: bool): """Enable of disable an action componant Args: @@ -196,7 +198,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): "action_menu_edit_reach_sediment_layers": self.open_reach_sediment_layers, "action_menu_close": self.close_model, "action_menu_results_last": self.open_last_results, - ## Help + # Help "action_menu_pamhyr_users_pdf": lambda: self.open_doc_user(ext="pdf"), "action_menu_pamhyr_developers_pdf": lambda: self.open_doc_dev(ext="pdf"), "action_menu_pamhyr_users_html": lambda: self.open_doc_user(ext="html"), @@ -209,7 +211,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): "action_toolBar_save": self.save_study, "action_toolBar_close": self.close_model, "action_toolBar_run_solver": self.run_solver, - ## Current actions + # Current actions "action_toolBar_network": self.open_network, "action_toolBar_geometry": self.open_geometry, "action_toolBar_mesh": lambda: self.open_dummy("Mesh"), @@ -255,7 +257,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def closeEvent(self, event): if not self._close_question: if self._study is not None and not self._study.is_saved: - if self.dialog_close(cancel = False): + if self.dialog_close(cancel=False): # PAMHYR is close correctly (no crash) self.conf.set_close_correctly() super(ApplicationWindow, self).closeEvent(event) @@ -272,7 +274,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): # Maximise window self.showMaximized() - def set_debug_lvl(self, debug = True): + def set_debug_lvl(self, debug=True): if debug: logger.setLevel(logging.DEBUG) logger.info("Set logging level to DEBUG") @@ -280,7 +282,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): logger.setLevel(logging.INFO) logger.info("Set logging level to INFO") - def setup_debug_mode(self, init = False): + def setup_debug_mode(self, init=False): menu = self.findChild(QMenu, "menu_help") self.set_title() @@ -290,22 +292,23 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): self.debug_action.triggered.connect(self.open_debug) self.debug_sqlite_action = QAction("Debug SQLite", self) - self.debug_sqlite_action.setStatusTip("Open SQLite debuging tool (sqlitebrowser)") + self.debug_sqlite_action.setStatusTip( + "Open SQLite debuging tool (sqlitebrowser)") self.debug_sqlite_action.triggered.connect(self.open_sqlite) if self.conf.debug: menu.addAction(self.debug_action) menu.addAction(self.debug_sqlite_action) - self.set_debug_lvl(debug = True) + self.set_debug_lvl(debug=True) else: if self.conf.debug: menu.addAction(self.debug_action) menu.addAction(self.debug_sqlite_action) - self.set_debug_lvl(debug = True) + self.set_debug_lvl(debug=True) else: menu.removeAction(self.debug_action) menu.removeAction(self.debug_sqlite_action) - self.set_debug_lvl(debug = False) + self.set_debug_lvl(debug=False) ######### # MODEL # @@ -430,7 +433,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): dlg.setWindowTitle("Last open study") dlg.setText("Do you want to open again the last open study?") - opt = QMessageBox.Cancel | QMessageBox.Ok #| QMessageBox.Open + opt = QMessageBox.Cancel | QMessageBox.Ok # | QMessageBox.Open dlg.setStandardButtons(opt) dlg.setIcon(QMessageBox.Question) @@ -446,7 +449,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): elif res == QMessageBox.Cancel: return False - def dialog_close(self, cancel = True): + def dialog_close(self, cancel=True): dlg = QMessageBox(self) dlg.setWindowTitle("Close PAMHYR without saving study") @@ -504,7 +507,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): dialog = QFileDialog(self) dialog.setFileMode(QFileDialog.FileMode.ExistingFile) dialog.setDefaultSuffix(".pamhyr") - #dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) + # dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setNameFilters(['PamHyr (*.pamhyr)']) dialog.setDirectory(os.path.dirname(self.conf.last_study)) @@ -554,11 +557,12 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): if (self._study is not None and self._study.river.has_current_reach()): geometry = self.sub_win_filter_first( "Geometry", - contain = [self._study.river.current_reach().name] + contain=[self._study.river.current_reach().name] ) if geometry is None: - geometry = GeometryWindow(study=self._study, config=self.conf, parent=self) + geometry = GeometryWindow( + study=self._study, config=self.conf, parent=self) geometry.show() else: geometry.activateWindow() @@ -568,11 +572,11 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_boundary_cond(self): bound = self.sub_win_filter_first( "Boundary conditions", - contain = [] + contain=[] ) if bound is None: - bound = BoundaryConditionWindow(study = self._study, parent = self) + bound = BoundaryConditionWindow(study=self._study, parent=self) bound.show() else: bound.activateWindow() @@ -580,11 +584,11 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_lateral_contrib(self): lateral = self.sub_win_filter_first( "Lateral contribution", - contain = [] + contain=[] ) if lateral is None: - lateral = LateralContributionWindow(study = self._study, parent = self) + lateral = LateralContributionWindow(study=self._study, parent=self) lateral.show() else: lateral.activateWindow() @@ -592,14 +596,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_stricklers(self): strick = self.sub_win_filter_first( "Stricklers", - contain = [] + contain=[] ) if strick is None: strick = StricklersWindow( - study = self._study, - config = self.conf, - parent = self + study=self._study, + config=self.conf, + parent=self ) strick.show() else: @@ -607,17 +611,17 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_frictions(self): if (self._study is not None and - self._study.river.has_current_reach()): + self._study.river.has_current_reach()): frictions = self.sub_win_filter_first( "Frictions", - contain = [self._study.river.current_reach().name] + contain=[self._study.river.current_reach().name] ) if frictions is None: frictions = FrictionsWindow( - study = self._study, - parent = self + study=self._study, + parent=self ) frictions.show() else: @@ -629,14 +633,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): if self._study.river.has_current_reach(): initial = self.sub_win_filter_first( "Initial condition", - contain = [self._study.river.current_reach().name] + contain=[self._study.river.current_reach().name] ) if initial is None: initial = InitialConditionsWindow( - study = self._study, - config = self.conf, - parent = self + study=self._study, + config=self.conf, + parent=self ) initial.show() else: @@ -647,13 +651,13 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_solver_parameters(self): params = self.sub_win_filter_first( "Solver parameters", - contain = [] + contain=[] ) if params is None: params = SolverParametersWindow( - study = self._study, - parent = self + study=self._study, + parent=self ) params.show() else: @@ -661,15 +665,15 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_sediment_layers(self): sl = SedimentLayersWindow( - study = self._study, - parent = self + study=self._study, + parent=self ) sl.show() def open_reach_sediment_layers(self): sl = ReachSedimentLayersWindow( - study = self._study, - parent = self + study=self._study, + parent=self ) sl.show() @@ -678,30 +682,30 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): return run = SelectSolverWindow( - study = self._study, - config = self.conf, - parent = self + study=self._study, + config=self.conf, + parent=self ) if run.exec(): solver = run.solver check = CheckListWindow( - study = self._study, - config = self.conf, - solver = solver, - parent = self + study=self._study, + config=self.conf, + solver=solver, + parent=self ) check.show() def solver_log(self, solver): sol = SolverLogWindow( - study = self._study, - config = self.conf, - solver = solver, - parent = self + study=self._study, + config=self.conf, + solver=solver, + parent=self ) sol.show() - def open_solver_results(self, solver, results = None): + def open_solver_results(self, solver, results=None): # If no specific results, get last results if results is None: results = self._last_results @@ -713,15 +717,15 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): # Windows already opened res = self.sub_win_filter_first( "Results", - contain = [solver.name, results.date] + contain=[solver.name, results.date] ) if res is None: res = ResultsWindow( - study = self._study, - solver = solver, - results = results, - parent = self + study=self._study, + solver=solver, + results=results, + parent=self ) res.show() else: @@ -763,8 +767,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): QDesktopServices.openUrl(url) else: doc = DocWindow( - filename = filename, - parent = self + filename=filename, + parent=self ) doc.show() @@ -783,9 +787,9 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): def open_debug(self): repl = ReplWindow( - study = self._study, - config = self.conf, - parent = self + study=self._study, + config=self.conf, + parent=self ) repl.show() diff --git a/src/View/Network/GraphWidget.py b/src/View/Network/GraphWidget.py index f7b5acd05a75efd16bc732dc0c12329acbbfe7df..5253c37f48a7d840fe4928610787dfbdde73a5fc 100644 --- a/src/View/Network/GraphWidget.py +++ b/src/View/Network/GraphWidget.py @@ -115,6 +115,7 @@ class NodeItem(QGraphicsItem): if not self.graph._only_display: super(NodeItem, self).mouseMoveEvent(event) + class EdgeItem(QGraphicsItem): Type = QGraphicsItem.UserType + 2 @@ -216,6 +217,7 @@ class EdgeItem(QGraphicsItem): painter.drawPolygon(poly) painter.fillPath(path, brush) + class NodeText(QGraphicsTextItem): def __init__(self, node_item): super(NodeText, self).__init__() @@ -228,9 +230,9 @@ class NodeText(QGraphicsTextItem): def set_custom_pos(self, pos): x = pos.x() - y = pos.y() - 42 # Dont panic! The answer is 42 + y = pos.y() - 42 # Dont panic! The answer is 42 - self.setPos(QPointF(x,y)) + self.setPos(QPointF(x, y)) @timer def paint(self, painter, option, widget): @@ -248,6 +250,7 @@ class NodeText(QGraphicsTextItem): # Update the node text self.setPlainText(self.item.node.name) + class NewEdgeLine(QGraphicsItem): def __init__(self, src, dest): super(NewEdgeLine, self).__init__() @@ -278,13 +281,14 @@ class NewEdgeLine(QGraphicsItem): Qt.RoundJoin)) painter.drawLine(line) + class GraphWidget(QGraphicsView): changeEdge = pyqtSignal(object) changeNode = pyqtSignal(object) def __init__(self, graph, parent=None, min_size=(400, 400), max_size=None, - size=None, only_display=False, undo = None): + size=None, only_display=False, undo=None): super(GraphWidget, self).__init__(parent=parent) self.timerId = 0 @@ -522,7 +526,6 @@ class GraphWidget(QGraphicsView): self.changeNode.emit(self.sender()) self.changeEdge.emit(self.sender()) - def update_edges(self, node): """Update display of all edges linked with the node @@ -791,7 +794,7 @@ class GraphWidget(QGraphicsView): if self._state == "move": # Move on scene if (not self.selected_item() and - event.buttons() & Qt.LeftButton): + event.buttons() & Qt.LeftButton): old_p = self.mapToScene(self.m_origin_x, self.m_origin_y) new_p = self.mapToScene(event.pos()) translation = new_p - old_p @@ -805,7 +808,6 @@ class GraphWidget(QGraphicsView): self.update() super(GraphWidget, self).mouseMoveEvent(event) - # Contextual menu def _menu_default(self, event, pos, items, menu): @@ -835,7 +837,8 @@ class GraphWidget(QGraphicsView): enable = menu.addAction(_translate("Network", "Enable the reach")) is_enable = False - reverse = menu.addAction(_translate("Network", "Reverse the reach orientation")) + reverse = menu.addAction(_translate( + "Network", "Reverse the reach orientation")) action = menu.exec_(self.mapToGlobal(event.pos())) diff --git a/src/View/Network/Table.py b/src/View/Network/Table.py index da74d8135d65275889c18e5e6d914835240e8d2e..8a94c8b8de961723a5ba7a265cc64df3d9e1c014 100644 --- a/src/View/Network/Table.py +++ b/src/View/Network/Table.py @@ -69,6 +69,7 @@ class ComboBoxDelegate(QItemDelegate): def currentItemChanged(self): self.commitData.emit(self.sender()) + class NodeTableModel(PamhyrTableModel): def _setup_lst(self): self._lst = self._data.nodes() @@ -120,6 +121,7 @@ class NodeTableModel(PamhyrTableModel): self._lst = self._data.nodes() self.layoutChanged.emit() + class EdgeTableModel(PamhyrTableModel): def _setup_lst(self): self._lst = self._data.edges() @@ -140,7 +142,7 @@ class EdgeTableModel(PamhyrTableModel): try: if (self._headers[index.column()] == "node1" or - self._headers[index.column()] == "node2"): + self._headers[index.column()] == "node2"): node = self.graph.node(value) self._undo.push( SetNodeCommand( diff --git a/src/View/Network/UndoCommand.py b/src/View/Network/UndoCommand.py index c9cce895fb1adba400b32645cc4f0a47667a318a..1c1d9da15d6ac23512af54f84feea4a5c35a1980 100644 --- a/src/View/Network/UndoCommand.py +++ b/src/View/Network/UndoCommand.py @@ -31,6 +31,7 @@ from Model.Network.Node import Node from Model.Network.Edge import Edge from Model.Network.Graph import Graph + class AddNodeCommand(QUndoCommand): def __init__(self, graph, node): QUndoCommand.__init__(self) @@ -44,6 +45,7 @@ class AddNodeCommand(QUndoCommand): def redo(self): self._graph.insert_node(self._node) + class SetNodePosCommand(QUndoCommand): def __init__(self, node, new, old): QUndoCommand.__init__(self) @@ -58,6 +60,7 @@ class SetNodePosCommand(QUndoCommand): def redo(self): self._node.node.setPos(self._new[0], self._new[1]) + class DelNodeCommand(QUndoCommand): def __init__(self, graph, node): QUndoCommand.__init__(self) @@ -86,6 +89,7 @@ class DelNodeCommand(QUndoCommand): self._graph.remove_node(self._node.name) + class AddEdgeCommand(QUndoCommand): def __init__(self, graph, edge): QUndoCommand.__init__(self) @@ -99,6 +103,7 @@ class AddEdgeCommand(QUndoCommand): def redo(self): self._graph.insert_edge(self._edge) + class DelEdgeCommand(QUndoCommand): def __init__(self, graph, edge): QUndoCommand.__init__(self) @@ -144,6 +149,7 @@ class SetNodeCommand(QUndoCommand): def redo(self): self._el[self._column] = self._new + class EnableEdgeCommand(QUndoCommand): def __init__(self, edge, enable): QUndoCommand.__init__(self) @@ -153,10 +159,11 @@ class EnableEdgeCommand(QUndoCommand): self._enable = enable def undo(self): - self._edge.enable(enable = self._old) + self._edge.enable(enable=self._old) def redo(self): - self._edge.enable(enable = self._enable) + self._edge.enable(enable=self._enable) + class ReverseEdgeCommand(QUndoCommand): def __init__(self, edge): diff --git a/src/View/Network/Window.py b/src/View/Network/Window.py index f045859680e845dbffc75991b2aa410ed38ca649..1f8bb81193e7e16ee80f123bf3ffa481d26d91d6 100644 --- a/src/View/Network/Window.py +++ b/src/View/Network/Window.py @@ -57,11 +57,11 @@ class NetworkWindow(PamhyrWindow): def __init__(self, study=None, config=None, parent=None): super(NetworkWindow, self).__init__( - title = self._pamhyr_name + " - " + study.name, - study = study, - config = config, - trad = NetworkTranslate(), - options = ['undo'], + title=self._pamhyr_name + " - " + study.name, + study=study, + config=config, + trad=NetworkTranslate(), + options=['undo'], parent=parent, ) @@ -77,11 +77,11 @@ class NetworkWindow(PamhyrWindow): # Nodes table table = self.find(QTableView, "tableView_nodes") self._nodes_model = NodeTableModel( - table_view = table, - table_headers = self._table_headers_node, - editable_headers = ["name"], - data = self._graph, - undo = self._undo_stack, + table_view=table, + table_headers=self._table_headers_node, + editable_headers=["name"], + data=self._graph, + undo=self._undo_stack, ) table.setModel(self._nodes_model) @@ -91,30 +91,30 @@ class NetworkWindow(PamhyrWindow): # Edges table table = self.find(QTableView, "tableView_reachs") self.delegate_combobox = ComboBoxDelegate( - graph = self._graph, - parent = self, + graph=self._graph, + parent=self, ) self._reachs_model = EdgeTableModel( - table_view = table, - table_headers = self._table_headers_edge, - editable_headers = ["name", "node1", "node2"], - delegates = { + table_view=table, + table_headers=self._table_headers_edge, + editable_headers=["name", "node1", "node2"], + delegates={ "node1": self.delegate_combobox, "node2": self.delegate_combobox, }, - data = self._graph, - undo = self._undo_stack, + data=self._graph, + undo=self._undo_stack, ) table.setModel(self._reachs_model) table.setSelectionBehavior(QAbstractItemView.SelectRows) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) - #table.resizeColumnsToContents() + # table.resizeColumnsToContents() def setup_graph(self): self._graph_widget = GraphWidget( self._graph, parent=self, - undo = self._undo_stack + undo=self._undo_stack ) self._graph_layout = self.find(QHBoxLayout, "horizontalLayout_graph") self._graph_layout.addWidget(self._graph_widget) @@ -122,7 +122,8 @@ class NetworkWindow(PamhyrWindow): def setup_connections(self): self._nodes_model.dataChanged.connect(self._reachs_model.update) self._nodes_model.dataChanged.connect(self._graph_widget.rename_nodes) - self._reachs_model.dataChanged.connect(self._graph_widget.display_update) + self._reachs_model.dataChanged.connect( + self._graph_widget.display_update) self._reachs_model.dataChanged.connect(self._nodes_model.update) self._graph_widget.changeEdge.connect(self._reachs_model.update) self._graph_widget.changeNode.connect(self._nodes_model.update) diff --git a/src/View/Network/translate.py b/src/View/Network/translate.py index 44e97cf50f3b2deac34b319a009ce0e2506f6ec5..ac8431aeeeeac462f7fee4ce9795f9a3802565bd 100644 --- a/src/View/Network/translate.py +++ b/src/View/Network/translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class NetworkTranslate(PamhyrTranslate): def __init__(self): super(NetworkTranslate, self).__init__() diff --git a/src/View/Results/PlotAC.py b/src/View/Results/PlotAC.py index ed3d99ad8fa52d5e6ebe7aa35724d354857e6fa4..075e879f9126aaf4ce33b2bed592649d05078fd0 100644 --- a/src/View/Results/PlotAC.py +++ b/src/View/Results/PlotAC.py @@ -25,16 +25,17 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate + class PlotAC(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, parent=None): super(PlotAC, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self._current_timestamp = max(results.get("timestamps")) @@ -68,7 +69,7 @@ class PlotAC(PamhyrPlot): z = profile.geometry.z() self.canvas.axes.set_xlim( - left = min(x), right = max(x) + left=min(x), right=max(x) ) self.line_kp, = self.canvas.axes.plot( diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py index 99a59f88cd3c01a7ac7a696c5dcfe431feb39cb9..dd5a332b9cadf377f73cd5a25625735b760a4b06 100644 --- a/src/View/Results/PlotH.py +++ b/src/View/Results/PlotH.py @@ -32,16 +32,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotH(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, parent=None): super(PlotH, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self._mode = "time" @@ -87,7 +88,7 @@ class PlotH(PamhyrPlot): ts.sort() self.canvas.axes.set_xlim( - left = min(ts), right = max(ts) + left=min(ts), right=max(ts) ) # Draw discharge for each timestamp @@ -103,7 +104,7 @@ class PlotH(PamhyrPlot): return self.canvas.axes.set_ylim( - [min(min(y),0), max(y) + 10] + [min(min(y), 0), max(y) + 10] ) self._line = [ @@ -136,8 +137,8 @@ class PlotH(PamhyrPlot): lambda v: ( str( datetime.fromtimestamp(v) - t0 - ).split(",")[0]\ - .replace("days", _translate("Results", "days"))\ + ).split(",")[0] + .replace("days", _translate("Results", "days")) .replace("day", _translate("Results", "day")) ), fx diff --git a/src/View/Results/PlotKPC.py b/src/View/Results/PlotKPC.py index 61de649d4bea0e4ef66b205a72b956b0883a5079..3dd789a2f1ef79707f3e61748b864ddd5d8812cf 100644 --- a/src/View/Results/PlotKPC.py +++ b/src/View/Results/PlotKPC.py @@ -25,16 +25,17 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate + class PlotKPC(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, parent=None): super(PlotKPC, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self._current_timestamp = max(results.get("timestamps")) @@ -68,7 +69,7 @@ class PlotKPC(PamhyrPlot): z_min = reach.geometry.get_z_min() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) self.line_kp_zmin = self.canvas.axes.plot( diff --git a/src/View/Results/PlotSedProfile.py b/src/View/Results/PlotSedProfile.py index 3163931bccd55eb953811d41b47df16e17373060..406863e23aac5e280fb7fe8dd9b7f76279fbae3c 100644 --- a/src/View/Results/PlotSedProfile.py +++ b/src/View/Results/PlotSedProfile.py @@ -15,16 +15,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotSedProfile(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, parent=None): super(PlotSedProfile, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self._results = results @@ -59,8 +60,8 @@ class PlotSedProfile(PamhyrPlot): cur_0 = [] for p in range(profile.geometry.number_points): - cur.append(profile_sl) - cur_0.append(profile_sl_0) + cur.append(profile_sl) + cur_0.append(profile_sl_0) sl.append(cur) sl_0.append(cur_0) @@ -106,7 +107,6 @@ class PlotSedProfile(PamhyrPlot): return list(reversed(z_sl)) - @timer def draw(self): self.canvas.axes.cla() @@ -133,7 +133,7 @@ class PlotSedProfile(PamhyrPlot): z = profile.geometry.z() self.canvas.axes.set_xlim( - left = min(x), right = max(x) + left=min(x), right=max(x) ) z_sl = self.get_zsl(profile) diff --git a/src/View/Results/PlotSedReach.py b/src/View/Results/PlotSedReach.py index c63c80ec900034442163704a32a0ebd3f21be795..f9e774d8cec01cb564c9f36b557f5da3883c0146 100644 --- a/src/View/Results/PlotSedReach.py +++ b/src/View/Results/PlotSedReach.py @@ -15,16 +15,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotSedReach(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, parent=None): super(PlotSedReach, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self._results = results diff --git a/src/View/Results/PlotXY.py b/src/View/Results/PlotXY.py index 4271677610c23556a0ee418ff2e38345dda1d40d..5a513322f0f8b23bcb2863ac35fbbb12344aab01 100644 --- a/src/View/Results/PlotXY.py +++ b/src/View/Results/PlotXY.py @@ -31,16 +31,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class PlotXY(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, results=None, reach_id=0, profile_id=0, display_current=True, parent=None): super(PlotXY, self).__init__( - canvas = canvas, - trad = trad, - data = results, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=results, + toolbar=toolbar, + parent=parent ) self.display_current = display_current @@ -87,7 +88,7 @@ class PlotXY(PamhyrPlot): kp = reach.geometry.get_kp() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) # Draw line for each profile @@ -98,9 +99,9 @@ class PlotXY(PamhyrPlot): markersize=3, marker='+' ) for x, y, kp in zip( - reach.geometry.get_x(), - reach.geometry.get_y(), - kp + reach.geometry.get_x(), + reach.geometry.get_y(), + kp ) ] diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index 61e9f22b7e7f20529fad7f60bfe124fba5417a73..15167fd351a05463882ab26a8d54a76418c6b566 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -59,6 +59,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class ResultsWindow(PamhyrWindow): _pamhyr_ui = "Results" _pamhyr_name = "Results" @@ -79,10 +80,10 @@ class ResultsWindow(PamhyrWindow): ) super(ResultsWindow, self).__init__( - title = name, - study = study, - config = config, - trad = ResultsTranslate(), + title=name, + study=study, + config=config, + trad=ResultsTranslate(), parent=parent ) @@ -97,11 +98,11 @@ class ResultsWindow(PamhyrWindow): for t in ["reach", "profile"]: table = self.find(QTableView, f"tableView_{t}") self._table[t] = TableModel( - table_view = table, - table_headers = self._trad.get_dict(f"table_headers_{t}"), - data = self._results, - undo = self._undo_stack, - opt_data = t + table_view=table, + table_headers=self._trad.get_dict(f"table_headers_{t}"), + data=self._results, + undo=self._undo_stack, + opt_data=t ) def setup_slider(self): @@ -125,12 +126,12 @@ class ResultsWindow(PamhyrWindow): self.plot_layout.addWidget(self.canvas) self.plot_xy = PlotXY( - canvas = self.canvas, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar, - display_current = False + canvas=self.canvas, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar, + display_current=False ) self.plot_xy.draw() @@ -144,11 +145,11 @@ class ResultsWindow(PamhyrWindow): self.plot_layout_2.addWidget(self.canvas_2) self.plot_kpc = PlotKPC( - canvas = self.canvas_2, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar_2 + canvas=self.canvas_2, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar_2 ) self.plot_kpc.draw() @@ -162,11 +163,11 @@ class ResultsWindow(PamhyrWindow): self.plot_layout_3.addWidget(self.canvas_3) self.plot_ac = PlotAC( - canvas = self.canvas_3, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar_3 + canvas=self.canvas_3, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar_3 ) self.plot_ac.draw() @@ -175,16 +176,17 @@ class ResultsWindow(PamhyrWindow): self.toolbar_4 = PamhyrPlotToolbar( self.canvas_4, self ) - self.plot_layout_4 = self.find(QVBoxLayout, "verticalLayout_hydrograph") + self.plot_layout_4 = self.find( + QVBoxLayout, "verticalLayout_hydrograph") self.plot_layout_4.addWidget(self.toolbar_4) self.plot_layout_4.addWidget(self.canvas_4) self.plot_h = PlotH( - canvas = self.canvas_4, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar_4 + canvas=self.canvas_4, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar_4 ) self.plot_h.draw() @@ -199,11 +201,11 @@ class ResultsWindow(PamhyrWindow): if self._study.river.has_sediment(): self.plot_sed_reach = PlotSedReach( - canvas = self.canvas_5, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar_5 + canvas=self.canvas_5, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar_5 ) self.plot_sed_reach.draw() @@ -212,17 +214,18 @@ class ResultsWindow(PamhyrWindow): self.toolbar_6 = PamhyrPlotToolbar( self.canvas_6, self ) - self.plot_layout_6 = self.find(QVBoxLayout, "verticalLayout_sed_profile") + self.plot_layout_6 = self.find( + QVBoxLayout, "verticalLayout_sed_profile") self.plot_layout_6.addWidget(self.toolbar_6) self.plot_layout_6.addWidget(self.canvas_6) if self._study.river.has_sediment(): self.plot_sed_profile = PlotSedProfile( - canvas = self.canvas_6, - results = self._results, - reach_id = 0, - profile_id = 0, - toolbar = self.toolbar_6 + canvas=self.canvas_6, + results=self._results, + reach_id=0, + profile_id=0, + toolbar=self.toolbar_6 ) self.plot_sed_profile.draw() @@ -283,7 +286,8 @@ class ResultsWindow(PamhyrWindow): self._table[t].dataChanged.connect(fun[t]) - self._slider_profile.valueChanged.connect(self._set_current_profile_slider) + self._slider_profile.valueChanged.connect( + self._set_current_profile_slider) self._slider_time.valueChanged.connect(self._set_current_timestamp) def update_table_selection_reach(self, ind): @@ -312,7 +316,7 @@ class ResultsWindow(PamhyrWindow): ) table.scrollTo(index) - def update(self, reach_id = None, profile_id = None, timestamp = None): + def update(self, reach_id=None, profile_id=None, timestamp=None): if reach_id is not None: self.plot_xy.set_reach(reach_id) self.plot_ac.set_reach(reach_id) @@ -364,7 +368,7 @@ class ResultsWindow(PamhyrWindow): if len(indexes) == 0: return - self.update(reach_id = indexes[0].row()) + self.update(reach_id=indexes[0].row()) def _set_current_profile(self): table = self.find(QTableView, f"tableView_profile") @@ -373,18 +377,18 @@ class ResultsWindow(PamhyrWindow): return ind = indexes[0].row() - self.update(profile_id = ind) + self.update(profile_id=ind) self._slider_profile.setValue(ind) def _set_current_profile_slider(self): pid = self._slider_profile.value() - self.update(profile_id = pid) + self.update(profile_id=pid) return def _set_current_timestamp(self): timestamp = self._timestamps[self._slider_time.value()] - self.update(timestamp = timestamp) + self.update(timestamp=timestamp) def _copy(self): logger.info("TODO: copy") diff --git a/src/View/Results/translate.py b/src/View/Results/translate.py index 14f55ba36ba4467b4f002d7665a91481c761dd67..ae9dcad17d28dff1c7b8bc28196eb6eecc2447e3 100644 --- a/src/View/Results/translate.py +++ b/src/View/Results/translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class ResultsTranslate(PamhyrTranslate): def __init__(self): super(ResultsTranslate, self).__init__() diff --git a/src/View/RunSolver/Log/Window.py b/src/View/RunSolver/Log/Window.py index 2a33311f36669b2f217d0221150c197c5455a596..3e343a451b186fd9d3f07d7b1addacad8eae1642 100644 --- a/src/View/RunSolver/Log/Window.py +++ b/src/View/RunSolver/Log/Window.py @@ -44,22 +44,23 @@ from PyQt5.QtWidgets import ( _translate = QCoreApplication.translate + class SolverLogFileWindow(PamhyrWindow): _pamhyr_ui = "SolverLogFile" _pamhyr_name = "Solver logs" - def __init__(self, file_name = None, + def __init__(self, file_name=None, study=None, config=None, solver=None, parent=None): self._solver = solver self._file_name = file_name super(SolverLogFileWindow, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, - options = [], - parent = parent + title=self._pamhyr_name, + study=study, + config=config, + options=[], + parent=parent ) self.setup_action() @@ -75,7 +76,8 @@ class SolverLogFileWindow(PamhyrWindow): def setup_connections(self): self.find(QAction, "action_revert").triggered.connect(self.revert) - self.find(QAction, "action_open_in_editor").triggered.connect(self.open_on_editor) + self.find(QAction, "action_open_in_editor").triggered.connect( + self.open_on_editor) def setup_text(self): with open(self._file_name, "r") as f: diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py index 62484308003b2cfcfce532e089ea5f30fb007965..2adfce60b4a6829f08b1fa6aad35a822221303d6 100644 --- a/src/View/RunSolver/Window.py +++ b/src/View/RunSolver/Window.py @@ -55,6 +55,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class SelectSolverWindow(PamhyrDialog): _pamhyr_ui = "SelectSolver" _pamhyr_name = "Select solver" @@ -64,11 +65,11 @@ class SelectSolverWindow(PamhyrDialog): self._solver = None super(SelectSolverWindow, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, - options = [], - parent = parent + title=self._pamhyr_name, + study=study, + config=config, + options=[], + parent=parent ) self.setup_combobox() @@ -101,6 +102,7 @@ class SelectSolverWindow(PamhyrDialog): super(SelectSolverWindow, self).accept() + class SolverLogWindow(PamhyrWindow): _pamhyr_ui = "SolverLog" _pamhyr_name = "Solver Log" @@ -111,11 +113,11 @@ class SolverLogWindow(PamhyrWindow): self._results = None super(SolverLogWindow, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, - options = [], - parent = parent + title=self._pamhyr_name, + study=study, + config=config, + options=[], + parent=parent ) self.setup_action() @@ -132,22 +134,22 @@ class SolverLogWindow(PamhyrWindow): self._study.name.replace(" ", "_"), self._solver.name.replace(" ", "_"), ) - os.makedirs(self._workdir, exist_ok = True) + os.makedirs(self._workdir, exist_ok=True) self._alarm.start(500) self._output = Queue() self._process = self.new_process(parent) self._log(f" *** Export study {self._solver.name}", color="blue") - self._solver.export(self._study, self._workdir, qlog = self._output) + self._solver.export(self._study, self._workdir, qlog=self._output) self.update() self._log(f" *** Run solver {self._solver.name}", color="blue") self._solver.run( study, - process = self._process, - output_queue = self._output + process=self._process, + output_queue=self._output ) def new_process(self, parent): @@ -206,7 +208,8 @@ class SolverLogWindow(PamhyrWindow): # Get results if self._results is None: - self._results = self._solver.results(self._study, self._workdir, qlog = self._output) + self._results = self._solver.results( + self._study, self._workdir, qlog=self._output) self._parent.set_results(self._solver, self._results) while self._output.qsize() != 0: @@ -219,14 +222,14 @@ class SolverLogWindow(PamhyrWindow): def start(self): if self._solver.is_stoped(): self._log(f" *** Export study {self._solver.name}", color="blue") - self._solver.export(self._study, self._workdir, qlog = self._output) + self._solver.export(self._study, self._workdir, qlog=self._output) self.update() self._process = self.new_process(self._parent) self._log(" *** Start", color="blue") self._results = None - self._solver.start(self._study, process = self._process) + self._solver.start(self._study, process=self._process) self.find(QAction, "action_start").setEnabled(False) if _signal: @@ -259,7 +262,8 @@ class SolverLogWindow(PamhyrWindow): def results(self): if self._results is None: - self._results = self._solver.results(self._study, self._workdir, qlog = self._output) + self._results = self._solver.results( + self._study, self._workdir, qlog=self._output) self._parent.set_results(self._solver, self._results) self._parent.open_solver_results(self._solver, self._results) @@ -267,10 +271,10 @@ class SolverLogWindow(PamhyrWindow): def log_file(self): file_name = os.path.join(self._workdir, self._solver.log_file()) log = SolverLogFileWindow( - file_name = file_name, - study = self._study, - config = self._config, - solver = self._solver, - parent = self, + file_name=file_name, + study=self._study, + config=self._config, + solver=self._solver, + parent=self, ) log.show() diff --git a/src/View/SedimentLayers/Edit/Plot.py b/src/View/SedimentLayers/Edit/Plot.py index a6fa21852b8f5a87b2fccda9370313d481b10774..9a9baed3ac6b1c9b1ef905fbeef49632107cee82 100644 --- a/src/View/SedimentLayers/Edit/Plot.py +++ b/src/View/SedimentLayers/Edit/Plot.py @@ -9,15 +9,16 @@ from View.Tools.PamhyrPlot import PamhyrPlot logger = logging.getLogger() + class Plot(PamhyrPlot): def __init__(self, canvas=None, trad=None, data=None, toolbar=None, display_current=True, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._display_current = display_current @@ -39,13 +40,13 @@ class Plot(PamhyrPlot): if self.data is None: return - x = [0,1] - z = [0,0] + x = [0, 1] + z = [0, 0] sl = self.data.height() names = ["bottom"] + self.data.names() self.canvas.axes.set_xlim( - left = min(x), right = max(x) + left=min(x), right=max(x) ) lsl = [] @@ -75,7 +76,8 @@ class Plot(PamhyrPlot): lw=1.8, color='grey' if i == len(names) - 1 else None ) - self.canvas.axes.text(x[0] + 0.01, zsl[0] + 0.01, f'{names[-(i+1)]}') + self.canvas.axes.text( + x[0] + 0.01, zsl[0] + 0.01, f'{names[-(i+1)]}') self.canvas.figure.tight_layout() self.canvas.figure.canvas.draw_idle() diff --git a/src/View/SedimentLayers/Edit/UndoCommand.py b/src/View/SedimentLayers/Edit/UndoCommand.py index 298fa529708b659785d7ac56b0ede3cc98bb80d3..e353211cb262347986a943f6df286629c3fe3aa8 100644 --- a/src/View/SedimentLayers/Edit/UndoCommand.py +++ b/src/View/SedimentLayers/Edit/UndoCommand.py @@ -10,6 +10,7 @@ from PyQt5.QtWidgets import ( from Model.SedimentLayer.SedimentLayer import SedimentLayer from Model.SedimentLayer.SedimentLayerList import SedimentLayerList + class SetNameCommand(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -25,6 +26,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).name = self._new + class SetTypeCommand(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -40,6 +42,7 @@ class SetTypeCommand(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).type = self._new + class SetHeightCommand(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -55,6 +58,7 @@ class SetHeightCommand(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).height = self._new + class SetD50Command(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -70,6 +74,7 @@ class SetD50Command(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).d50 = self._new + class SetSigmaCommand(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -85,6 +90,7 @@ class SetSigmaCommand(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).sigma = self._new + class SetCriticalConstraintCommand(QUndoCommand): def __init__(self, sediment_layers, index, new_value): QUndoCommand.__init__(self) @@ -100,6 +106,7 @@ class SetCriticalConstraintCommand(QUndoCommand): def redo(self): self._sediment_layers.get(self._index).critical_constraint = self._new + class AddCommand(QUndoCommand): def __init__(self, sediment_layers, index): QUndoCommand.__init__(self) @@ -117,6 +124,7 @@ class AddCommand(QUndoCommand): else: self._sediment_layers.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, sediment_layers, rows): QUndoCommand.__init__(self) @@ -136,6 +144,7 @@ class DelCommand(QUndoCommand): def redo(self): self._sediment_layers.delete_i(self._rows) + class MoveCommand(QUndoCommand): def __init__(self, sediment_layers, up, i): QUndoCommand.__init__(self) diff --git a/src/View/SedimentLayers/Edit/Window.py b/src/View/SedimentLayers/Edit/Window.py index e5835c97bba389d80e0eb7e9650ffb39f8b52ec0..080eee3f7db94d5122eafde60f17a2fc921b10c2 100644 --- a/src/View/SedimentLayers/Edit/Window.py +++ b/src/View/SedimentLayers/Edit/Window.py @@ -51,11 +51,12 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class EditSedimentLayersWindow(PamhyrWindow): _pamhyr_ui = "EditSedimentLayers" _pamhyr_name = "Edit Sediment Layers" - def __init__(self, study=None, config = None, + def __init__(self, study=None, config=None, sl=None, parent=None): self._sl = sl @@ -68,11 +69,11 @@ class EditSedimentLayersWindow(PamhyrWindow): ) super(EditSedimentLayersWindow, self).__init__( - title = name, - study = study, - config = config, - trad = SedimentEditTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=SedimentEditTranslate(), + parent=parent ) self.setup_table() @@ -83,12 +84,12 @@ class EditSedimentLayersWindow(PamhyrWindow): table_headers = self._trad.get_dict("table_headers") table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - table_headers = table_headers, - editable_headers = list(table_headers), - data = self._sl, - trad = self._trad, - undo = self._undo_stack, + table_view=table, + table_headers=table_headers, + editable_headers=list(table_headers), + data=self._sl, + trad=self._trad, + undo=self._undo_stack, ) table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -108,20 +109,20 @@ class EditSedimentLayersWindow(PamhyrWindow): def _set_plot(self): self.plot = Plot( - canvas = self.canvas, - data = self._sl, - toolbar = self.toolbar, - trad = self._trad, - display_current = False + canvas=self.canvas, + data=self._sl, + toolbar=self.toolbar, + trad=self._trad, + display_current=False ) self.plot.draw() - def setup_connections(self): self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_del").triggered.connect(self.delete) self.find(QAction, "action_move_up").triggered.connect(self.move_up) - self.find(QAction, "action_move_down").triggered.connect(self.move_down) + self.find(QAction, "action_move_down").triggered.connect( + self.move_down) self._table.dataChanged.connect(self._set_plot) self._table.layoutChanged.connect(self._set_plot) diff --git a/src/View/SedimentLayers/Edit/translate.py b/src/View/SedimentLayers/Edit/translate.py index 658d4f23f2edbca7aa9da94a1a61be53fdf49872..ce036b8d6cb4bd62f38398f42bb734dbe78737f7 100644 --- a/src/View/SedimentLayers/Edit/translate.py +++ b/src/View/SedimentLayers/Edit/translate.py @@ -6,6 +6,7 @@ from View.SedimentLayers.translate import SedimentTranslate _translate = QCoreApplication.translate + class SedimentEditTranslate(SedimentTranslate): def __init__(self): super(SedimentEditTranslate, self).__init__() diff --git a/src/View/SedimentLayers/Reach/Plot.py b/src/View/SedimentLayers/Reach/Plot.py index 069a09d711c667e0882e89599be3a8726bcb48a5..0db3b4e2efdff63036c55797be126f47b6736ac7 100644 --- a/src/View/SedimentLayers/Reach/Plot.py +++ b/src/View/SedimentLayers/Reach/Plot.py @@ -15,16 +15,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class Plot(PamhyrPlot): def __init__(self, data=None, display_current=True, canvas=None, trad=None, toolbar=None, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._display_current = display_current @@ -58,7 +59,7 @@ class Plot(PamhyrPlot): z_max = self.data.get_z_max() self.canvas.axes.set_xlim( - left = min(kp), right = max(kp) + left=min(kp), right=max(kp) ) # Compute sediment layer in function to profile z_min diff --git a/src/View/SedimentLayers/Reach/Profile/Plot.py b/src/View/SedimentLayers/Reach/Profile/Plot.py index 01b2fe245b1e01bb73080ef5e403b4deec3b2128..062070acbf0fabb291a3c320c0deecc533da2366 100644 --- a/src/View/SedimentLayers/Reach/Profile/Plot.py +++ b/src/View/SedimentLayers/Reach/Profile/Plot.py @@ -15,16 +15,17 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class Plot(PamhyrPlot): def __init__(self, data=None, display_current=True, canvas=None, trad=None, toolbar=None, parent=None): super(Plot, self).__init__( - canvas = canvas, - trad = trad, - data = data, - toolbar = toolbar, - parent = parent + canvas=canvas, + trad=trad, + data=data, + toolbar=toolbar, + parent=parent ) self._display_current = display_current @@ -57,7 +58,7 @@ class Plot(PamhyrPlot): sl = self.data.get_sl() self.canvas.axes.set_xlim( - left = min(x), right = max(x) + left=min(x), right=max(x) ) # Compute sediment layer in function to point z diff --git a/src/View/SedimentLayers/Reach/Profile/Table.py b/src/View/SedimentLayers/Reach/Profile/Table.py index 3550940b50659715965d0d211593ff0071b14b03..fbdfb0420aeb9190eb92e492390f903ed0200894 100644 --- a/src/View/SedimentLayers/Reach/Profile/Table.py +++ b/src/View/SedimentLayers/Reach/Profile/Table.py @@ -26,6 +26,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class ComboBoxDelegate(QItemDelegate): def __init__(self, study=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) diff --git a/src/View/SedimentLayers/Reach/Profile/UndoCommand.py b/src/View/SedimentLayers/Reach/Profile/UndoCommand.py index fe3497aede40ac048aa6ea1999e6da1566bce976..980d970bc4a00d03ad8b14518f1306ca09c14099 100644 --- a/src/View/SedimentLayers/Reach/Profile/UndoCommand.py +++ b/src/View/SedimentLayers/Reach/Profile/UndoCommand.py @@ -16,6 +16,7 @@ from Model.SedimentLayer.SedimentLayerList import SedimentLayerList logger = logging.getLogger() + class SetSLCommand(QUndoCommand): def __init__(self, profile, index, new_value): QUndoCommand.__init__(self) diff --git a/src/View/SedimentLayers/Reach/Profile/Window.py b/src/View/SedimentLayers/Reach/Profile/Window.py index e2c2464b0ffe8a23c278cafc6098ffe264bf33d9..1dcbd0a8077aa21af3ca0e8e7669d62d17bdce56 100644 --- a/src/View/SedimentLayers/Reach/Profile/Window.py +++ b/src/View/SedimentLayers/Reach/Profile/Window.py @@ -37,6 +37,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class ProfileSedimentLayersWindow(PamhyrWindow): _pamhyr_ui = "ProfileSedimentLayers" _pamhyr_name = "Profile sediment layers" @@ -49,11 +50,11 @@ class ProfileSedimentLayersWindow(PamhyrWindow): name = self.compute_name(study) super(ProfileSedimentLayersWindow, self).__init__( - title = name, - study = study, - config = config, - trad = SedimentProfileTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=SedimentProfileTranslate(), + parent=parent ) self.setup_table() @@ -72,7 +73,7 @@ class ProfileSedimentLayersWindow(PamhyrWindow): pname = _translate( "SedimentLayers", "(no name - @kp)").replace("@kp", str(self._profile.kp) - ) + ) return ( self._pamhyr_name + " - " @@ -84,20 +85,20 @@ class ProfileSedimentLayersWindow(PamhyrWindow): table_headers = self._trad.get_dict("table_headers") self._delegate_sl = ComboBoxDelegate( - study = self._study, + study=self._study, parent=self ) table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - data = self._profile, - opt_data = self._study, - table_headers = table_headers, - editable_headers = ["sl"], - delegates = {"sl": self._delegate_sl}, - trad = self._trad, - undo = self._undo_stack, + table_view=table, + data=self._profile, + opt_data=self._study, + table_headers=table_headers, + editable_headers=["sl"], + delegates={"sl": self._delegate_sl}, + trad=self._trad, + undo=self._undo_stack, ) table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -118,10 +119,10 @@ class ProfileSedimentLayersWindow(PamhyrWindow): def _update_plot(self): self.plot = Plot( - canvas = self.canvas, - data = self._profile, - toolbar = self.toolbar, - display_current = False + canvas=self.canvas, + data=self._profile, + toolbar=self.toolbar, + display_current=False ) self.plot.draw() diff --git a/src/View/SedimentLayers/Reach/Profile/translate.py b/src/View/SedimentLayers/Reach/Profile/translate.py index b1c124051a5d108edd2f4f7af475acfcfad39019..81e6623d0c5d2f99449621f30c8949887de6020d 100644 --- a/src/View/SedimentLayers/Reach/Profile/translate.py +++ b/src/View/SedimentLayers/Reach/Profile/translate.py @@ -6,6 +6,7 @@ from View.SedimentLayers.Reach.translate import SedimentReachTranslate _translate = QCoreApplication.translate + class SedimentProfileTranslate(SedimentReachTranslate): def __init__(self): super(SedimentProfileTranslate, self).__init__() diff --git a/src/View/SedimentLayers/Reach/SLDialog.py b/src/View/SedimentLayers/Reach/SLDialog.py index c8a1efa0cf2952ea6f5caa2c1df89b4dce24a521..9f3c878bc87657a2fbba4448460c81da05dc6725 100644 --- a/src/View/SedimentLayers/Reach/SLDialog.py +++ b/src/View/SedimentLayers/Reach/SLDialog.py @@ -19,15 +19,16 @@ from View.SedimentLayers.Reach.translate import * _translate = QCoreApplication.translate + class SLDialog(PamhyrDialog): _pamhyr_ui = "SLDialog" _pamhyr_name = "SL" def __init__(self, study=None, config=None, parent=None): super(SLDialog, self).__init__( - title = self._pamhyr_name, - study = study, - config = config, + title=self._pamhyr_name, + study=study, + config=config, parent=parent ) diff --git a/src/View/SedimentLayers/Reach/Table.py b/src/View/SedimentLayers/Reach/Table.py index 250a47357f634aea59121c5761e8453923cef8aa..7e38fcc86317ff66991bfd68cc18d806a5fe54b7 100644 --- a/src/View/SedimentLayers/Reach/Table.py +++ b/src/View/SedimentLayers/Reach/Table.py @@ -25,6 +25,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class ComboBoxDelegate(QItemDelegate): def __init__(self, study=None, trad=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) diff --git a/src/View/SedimentLayers/Reach/UndoCommand.py b/src/View/SedimentLayers/Reach/UndoCommand.py index 17e1f0f1d308855606e2e8a0b972dc57b48d3983..4bce2235158f79732513c8ffd64a7e9166648a31 100644 --- a/src/View/SedimentLayers/Reach/UndoCommand.py +++ b/src/View/SedimentLayers/Reach/UndoCommand.py @@ -16,6 +16,7 @@ from Model.SedimentLayer.SedimentLayerList import SedimentLayerList logger = logging.getLogger() + class SetSLCommand(QUndoCommand): def __init__(self, reach, index, new_value): QUndoCommand.__init__(self) diff --git a/src/View/SedimentLayers/Reach/Window.py b/src/View/SedimentLayers/Reach/Window.py index 829bf035b39d2b073c62044ecd2785f125d6d534..9c400909330a072ee55aee09cf867f23e996501d 100644 --- a/src/View/SedimentLayers/Reach/Window.py +++ b/src/View/SedimentLayers/Reach/Window.py @@ -39,6 +39,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class ReachSedimentLayersWindow(PamhyrWindow): _pamhyr_ui = "ReachSedimentLayers" _pamhyr_name = "Reach sediment layers" @@ -54,11 +55,11 @@ class ReachSedimentLayersWindow(PamhyrWindow): ) super(ReachSedimentLayersWindow, self).__init__( - title = name, - study = study, - config = config, - trad = SedimentReachTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=SedimentReachTranslate(), + parent=parent ) self.setup_table() @@ -69,21 +70,21 @@ class ReachSedimentLayersWindow(PamhyrWindow): table_headers = self._trad.get_dict("table_headers") self._delegate_sl = ComboBoxDelegate( - study = self._study, - trad = self._trad, + study=self._study, + trad=self._trad, parent=self ) table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - data = self._reach, - opt_data = self._study, - table_headers = table_headers, - editable_headers = ["sl"], - delegates = {"sl": self._delegate_sl}, - trad = self._trad, - undo = self._undo_stack, + table_view=table, + data=self._reach, + opt_data=self._study, + table_headers=table_headers, + editable_headers=["sl"], + delegates={"sl": self._delegate_sl}, + trad=self._trad, + undo=self._undo_stack, ) table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -104,15 +105,14 @@ class ReachSedimentLayersWindow(PamhyrWindow): def _update_plot(self): self.plot = Plot( - canvas = self.canvas, - data = self._reach, - toolbar = self.toolbar, - trad = self._trad, - display_current = False + canvas=self.canvas, + data=self._reach, + toolbar=self.toolbar, + trad=self._trad, + display_current=False ) self.plot.draw() - def setup_connections(self): self.find(QAction, "action_edit").triggered.connect(self.edit_profile) @@ -128,7 +128,6 @@ class ReachSedimentLayersWindow(PamhyrWindow): self._table.dataChanged\ .connect(self._update_plot) - def index_selected_rows(self): table = self.find(QTableView, f"tableView") return list( @@ -157,8 +156,8 @@ class ReachSedimentLayersWindow(PamhyrWindow): def apply_sl_each_profile(self): slw = SLDialog( - study = self._study, - parent = self + study=self._study, + parent=self ) if slw.exec(): sl = slw.sl @@ -171,16 +170,15 @@ class ReachSedimentLayersWindow(PamhyrWindow): for row in rows: slw = ProfileSedimentLayersWindow( - study = self._study, - profile = self._reach.profile(row), - parent = self + study=self._study, + profile=self._reach.profile(row), + parent=self ) slw.show() - def edit_sl(self): slw = SedimentLayersWindow( - study = self._study, - parent = self + study=self._study, + parent=self ) slw.show() diff --git a/src/View/SedimentLayers/Reach/translate.py b/src/View/SedimentLayers/Reach/translate.py index 34785f32b691f759a8cbb918ca06db71ecd1be4c..fd2d3bdb6ab10e75f334f967863cb4521eaa6297 100644 --- a/src/View/SedimentLayers/Reach/translate.py +++ b/src/View/SedimentLayers/Reach/translate.py @@ -6,6 +6,7 @@ from View.SedimentLayers.translate import SedimentTranslate _translate = QCoreApplication.translate + class SedimentReachTranslate(SedimentTranslate): def __init__(self): super(SedimentReachTranslate, self).__init__() diff --git a/src/View/SedimentLayers/UndoCommand.py b/src/View/SedimentLayers/UndoCommand.py index f785743b4aa0b455a51bdb4228d0f961af3ee013..379a95456db4b90a4800528a8c9e954f227ab5f0 100644 --- a/src/View/SedimentLayers/UndoCommand.py +++ b/src/View/SedimentLayers/UndoCommand.py @@ -10,6 +10,7 @@ from PyQt5.QtWidgets import ( from Model.SedimentLayer.SedimentLayer import SedimentLayer from Model.SedimentLayer.SedimentLayerList import SedimentLayerList + class SetNameCommand(QUndoCommand): def __init__(self, sediment_layers_list, index, new_value): QUndoCommand.__init__(self) @@ -25,6 +26,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._sediment_layers_list.get(self._index).name = self._new + class SetCommentCommand(QUndoCommand): def __init__(self, sediment_layers_list, index, new_value): QUndoCommand.__init__(self) @@ -40,6 +42,7 @@ class SetCommentCommand(QUndoCommand): def redo(self): self._sediment_layers_list.get(self._index).comment = self._new + class AddCommand(QUndoCommand): def __init__(self, sediment_layers_list, index): QUndoCommand.__init__(self) @@ -57,6 +60,7 @@ class AddCommand(QUndoCommand): else: self._sediment_layers_list.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, sediment_layers_list, rows): QUndoCommand.__init__(self) @@ -76,6 +80,7 @@ class DelCommand(QUndoCommand): def redo(self): self._sediment_layers_list.delete_i(self._rows) + class MoveCommand(QUndoCommand): def __init__(self, sediment_layers_list, up, i): QUndoCommand.__init__(self) diff --git a/src/View/SedimentLayers/Window.py b/src/View/SedimentLayers/Window.py index 3c394de00cf6dc3bd8961852124231e4e3b14325..1ff2c7f9d49c4f524cce6651eac11a8d19cd4897 100644 --- a/src/View/SedimentLayers/Window.py +++ b/src/View/SedimentLayers/Window.py @@ -51,6 +51,7 @@ from View.SedimentLayers.Edit.Window import EditSedimentLayersWindow logger = logging.getLogger() + class SedimentLayersWindow(PamhyrWindow): _pamhyr_ui = "SedimentLayersList" _pamhyr_name = "Sediment Layers List" @@ -63,10 +64,10 @@ class SedimentLayersWindow(PamhyrWindow): ) super(SedimentLayersWindow, self).__init__( - title = name, - study = study, - config = config, - trad = SedimentTranslate(), + title=name, + study=study, + config=config, + trad=SedimentTranslate(), parent=parent ) @@ -77,12 +78,12 @@ class SedimentLayersWindow(PamhyrWindow): def setup_table(self): table = self.find(QTableView, f"tableView") self._table = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = ["name", "comment"], - data = self._study.river.sediment_layers, - trad = self._trad, - undo = self._undo_stack, + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=["name", "comment"], + data=self._study.river.sediment_layers, + trad=self._trad, + undo=self._undo_stack, ) table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -98,7 +99,8 @@ class SedimentLayersWindow(PamhyrWindow): def setup_connections(self): self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_del").triggered.connect(self.delete) - self.find(QAction, "action_edit").triggered.connect(self.edit_sediment_layers) + self.find(QAction, "action_edit").triggered.connect( + self.edit_sediment_layers) table = self.find(QTableView, f"tableView") table.selectionModel()\ @@ -115,15 +117,14 @@ class SedimentLayersWindow(PamhyrWindow): return self.plot = Plot( - canvas = self.canvas, - data = self._sediment_layers.get(rows[0]), - trad = self._trad, - toolbar = None, - display_current = False + canvas=self.canvas, + data=self._sediment_layers.get(rows[0]), + trad=self._trad, + toolbar=None, + display_current=False ) self.plot.draw() - def index_selected_rows(self): table = self.find(QTableView, f"tableView") return list( @@ -167,8 +168,8 @@ class SedimentLayersWindow(PamhyrWindow): for row in rows: slw = EditSedimentLayersWindow( - study = self._study, - sl = self._sediment_layers.get(row), - parent = self + study=self._study, + sl=self._sediment_layers.get(row), + parent=self ) slw.show() diff --git a/src/View/SedimentLayers/translate.py b/src/View/SedimentLayers/translate.py index 42d59f92412238bbab4353eea4cd930f92d083b1..83a6169d73a676faa243ede33c9e95912f3db979 100644 --- a/src/View/SedimentLayers/translate.py +++ b/src/View/SedimentLayers/translate.py @@ -6,6 +6,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class SedimentTranslate(PamhyrTranslate): def __init__(self): super(SedimentTranslate, self).__init__() diff --git a/src/View/SolverParameters/Table.py b/src/View/SolverParameters/Table.py index 47fa0ae9d8321b5d684a4f121465522d50990f58..bbf12adadebfd8d70054016dd84e197e307a1095 100644 --- a/src/View/SolverParameters/Table.py +++ b/src/View/SolverParameters/Table.py @@ -44,6 +44,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class TableModel(PamhyrTableModel): def _setup_lst(self): self._tab = self._opt_data diff --git a/src/View/SolverParameters/UndoCommand.py b/src/View/SolverParameters/UndoCommand.py index d3343d007ca17ad5c54a1398b92c1862c320e93b..2b6804b875d889d392162200e9dd95b27ed0dd98 100644 --- a/src/View/SolverParameters/UndoCommand.py +++ b/src/View/SolverParameters/UndoCommand.py @@ -25,6 +25,7 @@ from PyQt5.QtWidgets import ( from Model.SolverParameters.SolverParametersList import SolverParametersList + class SetCommand(QUndoCommand): def __init__(self, data, index, column, new_value): QUndoCommand.__init__(self) diff --git a/src/View/SolverParameters/Window.py b/src/View/SolverParameters/Window.py index b655cd532ba8ae6ed46fd303d093779ba517e532..d7100193e48b1ebe9fc5a3cd128454d944bc92e0 100644 --- a/src/View/SolverParameters/Window.py +++ b/src/View/SolverParameters/Window.py @@ -50,6 +50,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class SolverParametersWindow(PamhyrWindow): _pamhyr_ui = "SolverParameters" _pamhyr_name = "Solver parameters" @@ -57,12 +58,12 @@ class SolverParametersWindow(PamhyrWindow): def __init__(self, study=None, config=None, parent=None): name = self._pamhyr_name + " - " + study.name super(SolverParametersWindow, self).__init__( - title = name, - study = study, - config = config, - options = ['copy'], - trad = ParamTranslate(), - parent = parent + title=name, + study=study, + config=config, + options=['copy'], + trad=ParamTranslate(), + parent=parent ) self._params = self._study.river.parameters @@ -96,13 +97,13 @@ class SolverParametersWindow(PamhyrWindow): # Create table model self._table[st] = TableModel( - table_view = table, - data = self._study.river, - opt_data = st, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = ["value"], - trad = self._trad, - undo = self._undo_stack[st], + table_view=table, + data=self._study.river, + opt_data=st, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=["value"], + trad=self._trad, + undo=self._undo_stack[st], ) table.setModel(self._table[st]) diff --git a/src/View/SolverParameters/translate.py b/src/View/SolverParameters/translate.py index 01c51a705fd1a91add6e6353a4a1e3d45e136093..16816308115df1c780bab18c0178d72b790b86cb 100644 --- a/src/View/SolverParameters/translate.py +++ b/src/View/SolverParameters/translate.py @@ -22,6 +22,7 @@ from View.Tools.PamhyrTranslate import PamhyrTranslate _translate = QCoreApplication.translate + class ParamTranslate(PamhyrTranslate): def __init__(self): super(ParamTranslate, self).__init__() diff --git a/src/View/Stricklers/Table.py b/src/View/Stricklers/Table.py index 587008032dd82b5b73866ab650ad296481360be9..7b740b91e40de5b8e98c0b3efb60ac45621eaac9 100644 --- a/src/View/Stricklers/Table.py +++ b/src/View/Stricklers/Table.py @@ -46,6 +46,7 @@ logger = logging.getLogger() _translate = QCoreApplication.translate + class TableModel(PamhyrTableModel): def data(self, index, role): if role != Qt.ItemDataRole.DisplayRole: diff --git a/src/View/Stricklers/UndoCommand.py b/src/View/Stricklers/UndoCommand.py index 52988b262eb2b66e66e822602c513cf11c33f16a..00aedb219ea64a76728d7214dcc33b07a5c044ef 100644 --- a/src/View/Stricklers/UndoCommand.py +++ b/src/View/Stricklers/UndoCommand.py @@ -26,6 +26,7 @@ from PyQt5.QtWidgets import ( from Model.LateralContribution.LateralContribution import LateralContribution from Model.LateralContribution.LateralContributionList import LateralContributionList + class SetNameCommand(QUndoCommand): def __init__(self, data, index, new_value): QUndoCommand.__init__(self) @@ -41,6 +42,7 @@ class SetNameCommand(QUndoCommand): def redo(self): self._data.get(self._index).name = self._new + class SetCommentCommand(QUndoCommand): def __init__(self, data, index, new_value): QUndoCommand.__init__(self) @@ -56,6 +58,7 @@ class SetCommentCommand(QUndoCommand): def redo(self): self._data.get(self._index).comment = self._new + class SetMinorCommand(QUndoCommand): def __init__(self, data, index, new_value): QUndoCommand.__init__(self) @@ -71,6 +74,7 @@ class SetMinorCommand(QUndoCommand): def redo(self): self._data.get(self._index).minor = self._new + class SetMediumCommand(QUndoCommand): def __init__(self, data, index, new_value): QUndoCommand.__init__(self) @@ -104,6 +108,7 @@ class AddCommand(QUndoCommand): else: self._data.insert(self._index, self._new) + class DelCommand(QUndoCommand): def __init__(self, data, rows): QUndoCommand.__init__(self) @@ -123,6 +128,7 @@ class DelCommand(QUndoCommand): def redo(self): self._data.delete_i(self._rows) + class SortCommand(QUndoCommand): def __init__(self, data, _reverse): QUndoCommand.__init__(self) @@ -150,6 +156,7 @@ class SortCommand(QUndoCommand): ) self._old = None + class PasteCommand(QUndoCommand): def __init__(self, data, row, el): QUndoCommand.__init__(self) diff --git a/src/View/Stricklers/Window.py b/src/View/Stricklers/Window.py index 792ed4e3114690eac33b72f6f069193d9d91787e..b647154ca425fc23d7224c185a89458cde95c7d0 100644 --- a/src/View/Stricklers/Window.py +++ b/src/View/Stricklers/Window.py @@ -49,6 +49,7 @@ _translate = QCoreApplication.translate logger = logging.getLogger() + class StricklersWindow(PamhyrWindow): _pamhyr_ui = "Stricklers" _pamhyr_name = "Stricklers" @@ -57,11 +58,11 @@ class StricklersWindow(PamhyrWindow): name = self._pamhyr_name + " - " + study.name super(StricklersWindow, self).__init__( - title = name, - study = study, - config = config, - trad = StricklersTranslate(), - parent = parent + title=name, + study=study, + config=config, + trad=StricklersTranslate(), + parent=parent ) self.setup_table() @@ -78,11 +79,11 @@ class StricklersWindow(PamhyrWindow): data = self._config.stricklers self._table[t] = TableModel( - table_view = table, - table_headers = self._trad.get_dict("table_headers"), - editable_headers = ["name", "comment", "minor", "medium"], - data = data, - undo = self._undo_stack, + table_view=table, + table_headers=self._trad.get_dict("table_headers"), + editable_headers=["name", "comment", "minor", "medium"], + data=data, + undo=self._undo_stack, ) table.setModel(self._table[t]) @@ -106,7 +107,6 @@ class StricklersWindow(PamhyrWindow): ) ) - def add(self): rows = self.index_selected_rows() if len(rows) == 0: diff --git a/src/View/Study/Window.py b/src/View/Study/Window.py index 871d0545afdaacf7c3704ca30854bbf38ec06e52..35bbe1d9da378fb8eb74a6acd3d7493d23a0d220 100644 --- a/src/View/Study/Window.py +++ b/src/View/Study/Window.py @@ -27,27 +27,29 @@ from PyQt5.QtWidgets import ( _translate = QCoreApplication.translate + class NewStudyWindow(PamhyrDialog): _pamhyr_ui = "NewStudy" _pamhyr_name = "Edit/New Study" - def __init__(self, study=None, config = None, parent=None): + def __init__(self, study=None, config=None, parent=None): if study is not None: name = f"Edit study - {study.name}" else: name = "New study" super(NewStudyWindow, self).__init__( - title = name, - study = study, - config = config, - options = [], - parent = parent + title=name, + study=study, + config=config, + options=[], + parent=parent ) if not self._study is None: self.set_line_edit_text("lineEdit_name", self._study.name) - self.set_text_edit_text("textEdit_description", self._study.description) + self.set_text_edit_text( + "textEdit_description", self._study.description) self.set_datetime_edit("dateTimeEdit_date", self._study.date) self.find(QLabel, "label_creation_date_data").setText( @@ -81,7 +83,6 @@ class NewStudyWindow(PamhyrDialog): self.find(QLabel, "label_date").setEnabled(True) self.find(QDateTimeEdit, "dateTimeEdit_date").setEnabled(True) - def accept(self): name = self.get_line_edit_text("lineEdit_name") description = self.get_text_edit_text("textEdit_description") diff --git a/src/View/Tools/ASubWindow.py b/src/View/Tools/ASubWindow.py index b6adcc829caf3f7f6f222a78bd395e7419e9b3d8..aa95ddcd78ac2cfd849430a6433e0648ce5aa722 100644 --- a/src/View/Tools/ASubWindow.py +++ b/src/View/Tools/ASubWindow.py @@ -46,6 +46,7 @@ from Model.Except import ClipboardFormatError logger = logging.getLogger() + class WindowToolKit(object): def __init__(self, parent=None): super(WindowToolKit, self).__init__() @@ -150,7 +151,7 @@ class ASubWindowFeatures(object): return qtype - def get_label_text(self, name:str): + def get_label_text(self, name: str): """Get text of label component Args: @@ -161,7 +162,7 @@ class ASubWindowFeatures(object): """ return self.find(QLabel, name).text() - def set_label_text(self, name:str, text:str): + def set_label_text(self, name: str, text: str): """Set text of label component Args: @@ -173,8 +174,7 @@ class ASubWindowFeatures(object): """ self.find(QLabel, name).setText(text) - - def set_line_edit_text(self, name:str, text:str): + def set_line_edit_text(self, name: str, text: str): """Set text of line edit component Args: @@ -189,7 +189,7 @@ class ASubWindowFeatures(object): except AttributeError as e: logger.error(e) - def get_line_edit_text(self, name:str): + def get_line_edit_text(self, name: str): """Get text of line edit component Args: @@ -200,7 +200,7 @@ class ASubWindowFeatures(object): """ return self.find(QLineEdit, name).text() - def set_text_edit_text(self, name:str, text:str): + def set_text_edit_text(self, name: str, text: str): """Set text of text edit component Args: @@ -212,7 +212,7 @@ class ASubWindowFeatures(object): """ self.find(QTextEdit, name).setText(text) - def get_text_edit_text(self, name:str): + def get_text_edit_text(self, name: str): """Get text of text edit component Args: @@ -223,7 +223,7 @@ class ASubWindowFeatures(object): """ return self.find(QTextEdit, name).toHtml() - def set_plaintext_edit_text(self, name:str, text:str): + def set_plaintext_edit_text(self, name: str, text: str): """Set text of text edit component Args: @@ -235,7 +235,7 @@ class ASubWindowFeatures(object): """ self.find(QPlainTextEdit, name).setPlainText(text) - def get_plaintext_edit_text(self, name:str): + def get_plaintext_edit_text(self, name: str): """Get text of text edit component Args: @@ -246,7 +246,7 @@ class ASubWindowFeatures(object): """ return self.find(QPlainTextEdit, name).toPlainText() - def set_check_box(self, name:str, checked:bool): + def set_check_box(self, name: str, checked: bool): """Set status of checkbox component Args: @@ -258,7 +258,7 @@ class ASubWindowFeatures(object): """ self.find(QCheckBox, name).setChecked(checked) - def get_check_box(self, name:str): + def get_check_box(self, name: str): """Get status of checkbox component Args: @@ -269,8 +269,7 @@ class ASubWindowFeatures(object): """ return self.find(QCheckBox, name).isChecked() - - def set_time_edit(self, name:str, time:str): + def set_time_edit(self, name: str, time: str): """Set time of timeedit component Args: @@ -283,7 +282,7 @@ class ASubWindowFeatures(object): qtime = QTime.fromString(time) self.find(QTimeEdit, name).setTime(qtime) - def get_time_edit(self, name:str): + def get_time_edit(self, name: str): """Get time of timeedit component Args: @@ -294,7 +293,7 @@ class ASubWindowFeatures(object): """ return self.find(QTimeEdit, name).time().toString() - def set_spin_box(self, name:str, value:int): + def set_spin_box(self, name: str, value: int): """Set value of spinbox component Args: @@ -306,7 +305,7 @@ class ASubWindowFeatures(object): """ self.find(QSpinBox, name).setValue(value) - def get_spin_box(self, name:str): + def get_spin_box(self, name: str): """Get time of spin box component Args: @@ -317,7 +316,7 @@ class ASubWindowFeatures(object): """ return self.find(QSpinBox, name).value() - def set_action_checkable(self, name:str, checked:bool): + def set_action_checkable(self, name: str, checked: bool): """Set value of action Args: @@ -329,7 +328,7 @@ class ASubWindowFeatures(object): """ self.find(QAction, name).setChecked(checked) - def get_action_checkable(self, name:str): + def get_action_checkable(self, name: str): """Get status of action Args: @@ -340,8 +339,7 @@ class ASubWindowFeatures(object): """ return self.find(QAction, name).isChecked() - - def set_push_button_checkable(self, name:str, checked:bool): + def set_push_button_checkable(self, name: str, checked: bool): """Set value of push button component Args: @@ -353,7 +351,7 @@ class ASubWindowFeatures(object): """ self.find(QPushButton, name).setChecked(checked) - def get_push_button_checkable(self, name:str): + def get_push_button_checkable(self, name: str): """Get status of push button Args: @@ -364,7 +362,7 @@ class ASubWindowFeatures(object): """ return self.find(QPushButton, name).isChecked() - def set_radio_button(self, name:str, checked:bool): + def set_radio_button(self, name: str, checked: bool): """Set value of radio button component Args: @@ -376,7 +374,7 @@ class ASubWindowFeatures(object): """ self.find(QRadioButton, name).setChecked(checked) - def get_radio_button(self, name:str): + def get_radio_button(self, name: str): """Get status of radio button Args: @@ -387,7 +385,7 @@ class ASubWindowFeatures(object): """ return self.find(QRadioButton, name).isChecked() - def combobox_add_item(self, name:str, item:str): + def combobox_add_item(self, name: str, item: str): """Add item in combo box Args: @@ -399,7 +397,7 @@ class ASubWindowFeatures(object): """ self.find(QComboBox, name).addItem(item) - def combobox_add_items(self, name:str, items:str): + def combobox_add_items(self, name: str, items: str): """Add item in combo box Args: @@ -412,7 +410,7 @@ class ASubWindowFeatures(object): for item in items: self.find(QComboBox, name).addItem(item) - def set_combobox_text(self, name:str, item:str): + def set_combobox_text(self, name: str, item: str): """Set current text of combo box Args: @@ -424,7 +422,7 @@ class ASubWindowFeatures(object): """ self.find(QComboBox, name).setCurrentText(item) - def get_combobox_text(self, name:str): + def get_combobox_text(self, name: str): """Get current text of combo box Args: @@ -435,7 +433,7 @@ class ASubWindowFeatures(object): """ return self.find(QComboBox, name).currentText() - def get_datetime_edit(self, name:str): + def get_datetime_edit(self, name: str): """Get datetime of datetime edit Args: @@ -446,7 +444,7 @@ class ASubWindowFeatures(object): """ return self.find(QDateTimeEdit, name).dateTime().toPyDateTime() - def set_datetime_edit(self, name:str, date:datetime): + def set_datetime_edit(self, name: str, date: datetime): """Set datetime of a datetime edit Args: @@ -500,6 +498,7 @@ class ASubMainWindow(QMainWindow, ASubWindowFeatures, WindowToolKit): return self.ui.findChild(qtype, name) + class ASubWindow(QDialog, ASubWindowFeatures, WindowToolKit): def __init__(self, name="", ui="dummy", parent=None, **kwargs): super(ASubWindow, self).__init__(parent=parent) @@ -536,6 +535,7 @@ class ASubWindow(QDialog, ASubWindowFeatures, WindowToolKit): return self.ui.findChild(qtype, name) + class AWidget(QWidget, ASubWindowFeatures): def __init__(self, ui="", parent=None): super(AWidget, self).__init__(parent=parent) diff --git a/src/View/Tools/ListedSubWindow.py b/src/View/Tools/ListedSubWindow.py index 6c93b84eda99b998a6109c5e9f211cc54a81df4e..5a6c132c929adc38febbb6675747534daec0840f 100644 --- a/src/View/Tools/ListedSubWindow.py +++ b/src/View/Tools/ListedSubWindow.py @@ -21,6 +21,7 @@ from functools import reduce logger = logging.getLogger() + class ListedSubWindow(object): def __init__(self, **kwargs): super(ListedSubWindow, self).__init__() @@ -37,7 +38,8 @@ class ListedSubWindow(object): self.sub_win_list.append((name, win)) self.sub_win_cnt += 1 try: - logger.info(f"Open window: {name}: {self.sub_win_cnt}: {win.hash()}") + logger.info( + f"Open window: {name}: {self.sub_win_cnt}: {win.hash()}") except: logger.info(f"Open window: {name}: {self.sub_win_cnt}: X") @@ -75,7 +77,7 @@ class ListedSubWindow(object): False ) - def sub_win_exists(self, name, contain = []): + def sub_win_exists(self, name, contain=[]): if contain == []: return self._sub_win_exists(name) else: diff --git a/src/View/Tools/PamhyrDelegate.py b/src/View/Tools/PamhyrDelegate.py index c5e97da3a2ad5c2d7d253f351bd2d3891dc94832..c253ec25a81132fff8d84d1465baa9466fa78a30 100644 --- a/src/View/Tools/PamhyrDelegate.py +++ b/src/View/Tools/PamhyrDelegate.py @@ -32,6 +32,7 @@ from View.Tools.PamhyrWidget import ( logger = logging.getLogger() + class PamhyrExTimeDelegate(QItemDelegate): def __init__(self, data=None, mode="time", parent=None): super(PamhyrExTimeDelegate, self).__init__(parent) diff --git a/src/View/Tools/PamhyrPlot.py b/src/View/Tools/PamhyrPlot.py index b06ec2c24209d1c12bfc5f1818813a51fbc8d2a5..600687d58c2af1c15ca0f2c20efb7e93b9e5e7e1 100644 --- a/src/View/Tools/PamhyrPlot.py +++ b/src/View/Tools/PamhyrPlot.py @@ -20,6 +20,7 @@ from View.Tools.Plot.APlot import APlot from View.Tools.Plot.PamhyrCanvas import MplCanvas from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar + class PamhyrPlot(APlot): def __init__(self, data=None, trad=None, canvas=None, toolbar=None, @@ -32,7 +33,7 @@ class PamhyrPlot(APlot): self._toolbar = toolbar self._parent = parent - super(PamhyrPlot, self).__init__(data = data) + super(PamhyrPlot, self).__init__(data=data) @property def canvas(self): diff --git a/src/View/Tools/PamhyrTable.py b/src/View/Tools/PamhyrTable.py index 43aa22c2320705a16606941c46c79d344cd5c2a7..ff815624f52756736f3c855a38fac430b6dedb4e 100644 --- a/src/View/Tools/PamhyrTable.py +++ b/src/View/Tools/PamhyrTable.py @@ -57,6 +57,7 @@ class PamhyrTextDelegate(QStyledItemDelegate): def updateEditorGeometry(self, editor, option, index): editor.setGeometry(option.rect) + class PamhyrTableModel(QAbstractTableModel): def _setup_delegates(self): if self._table_view is None: @@ -75,14 +76,14 @@ class PamhyrTableModel(QAbstractTableModel): ) def __init__(self, - table_view = None, - table_headers = {}, - editable_headers = [], - delegates = {}, - trad = None, - data = None, - undo = None, - opt_data = None): + table_view=None, + table_headers={}, + editable_headers=[], + delegates={}, + trad=None, + data=None, + undo=None, + opt_data=None): super(PamhyrTableModel, self).__init__() self._table_view = table_view @@ -112,14 +113,13 @@ class PamhyrTableModel(QAbstractTableModel): self._table_view.setAlternatingRowColors(True) self._table_view.resizeColumnsToContents() - def flags(self, index): column = index.column() options = Qt.ItemIsEnabled | Qt.ItemIsSelectable if (self._editable_headers or - self._headers[column] in self._editable_headers): + self._headers[column] in self._editable_headers): options |= Qt.ItemIsEditable return options diff --git a/src/View/Tools/PamhyrWidget.py b/src/View/Tools/PamhyrWidget.py index f906beedd3dc2d8e836c53c5d75c1a197f905248..d3e02dd9c071ed01f71dac7999e86225ab70a5fd 100644 --- a/src/View/Tools/PamhyrWidget.py +++ b/src/View/Tools/PamhyrWidget.py @@ -32,14 +32,15 @@ from View.Tools.ASubWindow import AWidget logger = logging.getLogger() + class PamhyrWidget(AWidget): _pamhyr_ui = None _pamhyr_name = "PamhyrWidget" def __init__(self, parent=None): super(PamhyrWidget, self).__init__( - ui = self._pamhyr_ui, - parent = parent + ui=self._pamhyr_ui, + parent=parent ) @@ -83,6 +84,7 @@ class PamhyrExtendedTimeEdit(AWidget): return timedelta(days=days, seconds=secs) + class PamhyrExtendedDateTimeEdit(AWidget): def __init__(self, parent=None): super(ExtendedDateTimeEdit, self).__init__( diff --git a/src/View/Tools/PamhyrWindow.py b/src/View/Tools/PamhyrWindow.py index fb4bf1a12cf76a77574a14f3c0db41658a2756cc..a3c7d4c302730cb4e1d42a37e102a483a4ca0e57 100644 --- a/src/View/Tools/PamhyrWindow.py +++ b/src/View/Tools/PamhyrWindow.py @@ -31,8 +31,9 @@ from View.Tools.ListedSubWindow import ListedSubWindow logger = logging.getLogger() + class PamhyrWindowTools(object): - def __init__(self, options = ["undo", "copy"], parent = None, **kwargs): + def __init__(self, options=["undo", "copy"], parent=None, **kwargs): super(PamhyrWindowTools, self).__init__() self._hash_data = [] @@ -139,10 +140,10 @@ class PamhyrWindow(ASubMainWindow, ListedSubWindow, PamhyrWindowTools): _pamhyr_name = "PamhyrWindow" def __init__(self, - title = "Pamhyr2", - study = None, config = None, trad = None, - options = ["undo", "copy"], - parent = None): + title="Pamhyr2", + study=None, config=None, trad=None, + options=["undo", "copy"], + parent=None): self._title = title self._study = study self._config = config @@ -150,9 +151,9 @@ class PamhyrWindow(ASubMainWindow, ListedSubWindow, PamhyrWindowTools): self._parent = parent super(PamhyrWindow, self).__init__( - name = self._pamhyr_name, - ui = self._pamhyr_ui, - parent = parent, + name=self._pamhyr_name, + ui=self._pamhyr_ui, + parent=parent, ) self._hash_data.append(self._study) @@ -166,10 +167,10 @@ class PamhyrDialog(ASubWindow, ListedSubWindow, PamhyrWindowTools): _pamhyr_name = "PamhyrWindow" def __init__(self, - title = "Pamhyr2", - study = None, config = None, trad = None, - options = ["undo", "copy"], - parent = None): + title="Pamhyr2", + study=None, config=None, trad=None, + options=["undo", "copy"], + parent=None): self._title = title self._study = study self._config = config @@ -177,9 +178,9 @@ class PamhyrDialog(ASubWindow, ListedSubWindow, PamhyrWindowTools): self._parent = parent super(PamhyrDialog, self).__init__( - name = self._pamhyr_name, - ui = self._pamhyr_ui, - parent = parent, + name=self._pamhyr_name, + ui=self._pamhyr_ui, + parent=parent, ) self._hash_data.append(self._study) diff --git a/src/View/Tools/Plot/APlot.py b/src/View/Tools/Plot/APlot.py index 7d8de3070421bd7214aac4a05fc5fc8a3cb2c1dc..3fe98fbc5bfa9561b3cac0ed53dfa6019c76774f 100644 --- a/src/View/Tools/Plot/APlot.py +++ b/src/View/Tools/Plot/APlot.py @@ -18,6 +18,7 @@ from Model.Except import NotImplementedMethodeError + class APlot(object): def __init__(self, data=None): super(APlot, self).__init__() @@ -29,7 +30,6 @@ class APlot(object): def data(self): return self._data - def draw(self): """Draw plot @@ -38,8 +38,7 @@ class APlot(object): """ raise NotImplementedMethodeError(self, self.draw) - - def update(self, ind = None): + def update(self, ind=None): """Update plot Update the plot, update for data index IND if define, else diff --git a/src/View/Tools/Plot/OnPickEvent.py b/src/View/Tools/Plot/OnPickEvent.py index fdfa1de6c7950d98d9ff53004ed4ccfcabbd3f80..e02c897dae027286f0443edc79ee5ff8c3cb8f18 100644 --- a/src/View/Tools/Plot/OnPickEvent.py +++ b/src/View/Tools/Plot/OnPickEvent.py @@ -26,6 +26,7 @@ from shapely.geometry.polygon import Polygon as ShapelyPolygon logger = logging.getLogger() + class OnpickEvent(object): def __init__(self, ax, x, y, x_carto, y_carto, tableview=None): """ @@ -117,7 +118,8 @@ class OnpickEvent(object): self.pt1 = self.ax.plot(self.x[row], self.y[row], '+', c='Blue', markersize=7) self.pt.append(self.pt1) - self.update_select_point_point_bis(self.x[row], self.y[row]) + self.update_select_point_point_bis( + self.x[row], self.y[row]) elif len(rows) == 1: for row in rows: try: @@ -130,7 +132,8 @@ class OnpickEvent(object): self.update_select_point_point_bis(self.x[row], self.y[row]) except: - logger.info("update_select_point_point_bis: Update issue, possible index missing") + logger.info( + "update_select_point_point_bis: Update issue, possible index missing") self.ax.figure.canvas.draw_idle() @@ -382,7 +385,8 @@ class OnpickEvent(object): self.pos_x_annotation = x_min + ((x_max - x_min) / 2) percent = 0 - y_ecran_lim = ((max(self.ax.set_ylim()) - min(self.ax.set_ylim())) / 2) + y_ecran_lim = ((max(self.ax.set_ylim()) - + min(self.ax.set_ylim())) / 2) if abs(y_ecran_lim) > 4: percent = 0.05 @@ -499,7 +503,8 @@ class OnpickEvent(object): liste_points_miroir = [ x for (x, y) in zip(xs, ys) if np.isclose(y, val) ] - largeur_miroir_polygone = liste_points_miroir[-2] - liste_points_miroir[0] + largeur_miroir_polygone = liste_points_miroir[-2] - \ + liste_points_miroir[0] largeur_miroir += largeur_miroir_polygone polygone_shapely = ShapelyPolygon(points_polygone) diff --git a/src/View/Tools/Plot/PamhyrCanvas.py b/src/View/Tools/Plot/PamhyrCanvas.py index c4bbf4d33d66b408f75a8c6a9134555eb56a03ea..ee1f5373544bb9096839da3e6b7ef964679035b4 100644 --- a/src/View/Tools/Plot/PamhyrCanvas.py +++ b/src/View/Tools/Plot/PamhyrCanvas.py @@ -17,6 +17,7 @@ from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg from matplotlib.figure import Figure + class MplCanvas(FigureCanvasQTAgg): def __init__(self, width=5, height=4, dpi=100): fig = Figure( diff --git a/src/View/Tools/Plot/PamhyrToolbar.py b/src/View/Tools/Plot/PamhyrToolbar.py index c88dfacf6ffa5d8cc1180fed06fa9887137fb33f..7d769d32b577c9aecb293939cf0729b906d5999a 100644 --- a/src/View/Tools/Plot/PamhyrToolbar.py +++ b/src/View/Tools/Plot/PamhyrToolbar.py @@ -39,7 +39,7 @@ class PamhyrPlotToolbar(NavigationToolbar2QT): """ isometric_signal = pyqtSignal(str) - def __init__(self, canvas, parent, items = ["home", "move", "zoom", "save"]): + def __init__(self, canvas, parent, items=["home", "move", "zoom", "save"]): """PamhyrPlotToolbar Args: @@ -56,12 +56,15 @@ class PamhyrPlotToolbar(NavigationToolbar2QT): icons = [] if "home" in items: - self.toolitems.append(('Home', _translate("Toolbar", 'Default view'), 'home', 'home')) + self.toolitems.append( + ('Home', _translate("Toolbar", 'Default view'), 'home', 'home')) self.toolitems.append((None, None, None, None)) if "back/forward" in items: - self.toolitems.append(('Back', _translate("Toolbar", 'Back to previous view'), 'back', 'back')) - self.toolitems.append(('Forward', _translate("Toolbar", 'Return to next view'), 'forward', 'forward')) + self.toolitems.append( + ('Back', _translate("Toolbar", 'Back to previous view'), 'back', 'back')) + self.toolitems.append(('Forward', _translate( + "Toolbar", 'Return to next view'), 'forward', 'forward')) self.toolitems.append((None, None, None, None)) if "move" in items: @@ -73,7 +76,8 @@ class PamhyrPlotToolbar(NavigationToolbar2QT): self.toolitems.append((None, None, None, None)) if "zoom" in items: - self.toolitems.append(('Zoom', _translate("Toolbar", 'Zoom'), 'zoom_to_rect', 'zoom')) + self.toolitems.append( + ('Zoom', _translate("Toolbar", 'Zoom'), 'zoom_to_rect', 'zoom')) self.toolitems.append((None, None, None, None)) icon_zoom = QtGui.QIcon() @@ -81,7 +85,7 @@ class PamhyrPlotToolbar(NavigationToolbar2QT): os.path.abspath(f"{file_path}/../ui/ressources/zoom.png") )) - icons.append(("zoom",icon_zoom)) + icons.append(("zoom", icon_zoom)) if "iso" in items: self.toolitems.append( @@ -173,10 +177,16 @@ class PamhyrPlotToolbar(NavigationToolbar2QT): def toolitems_translation(self): self._actions['home'].setToolTip(_translate("Toolbar", "Default view")) - self._actions['back'].setToolTip(_translate("Toolbar", "Back to previous view")) - self._actions['forward'].setToolTip(_translate("Toolbar", "Return to next view")) - self._actions['pan'].setToolTip(_translate("Toolbar", "Axes panoramic")) + self._actions['back'].setToolTip( + _translate("Toolbar", "Back to previous view")) + self._actions['forward'].setToolTip( + _translate("Toolbar", "Return to next view")) + self._actions['pan'].setToolTip( + _translate("Toolbar", "Axes panoramic")) self._actions['zoom'].setToolTip(_translate("Toolbar", "Zoom")) - self._actions['save_figure'].setToolTip(_translate("Toolbar", "Save the figure")) - self.action_isometric_view.setToolTip(_translate("Toolbar", "Isometric view (Shift+W)")) - self.action_auto_global_view.setToolTip(_translate("Toolbar", "Auto scale view (Shift+X)")) + self._actions['save_figure'].setToolTip( + _translate("Toolbar", "Save the figure")) + self.action_isometric_view.setToolTip( + _translate("Toolbar", "Isometric view (Shift+W)")) + self.action_auto_global_view.setToolTip( + _translate("Toolbar", "Auto scale view (Shift+X)")) diff --git a/src/config.py b/src/config.py index b3ddf6b446501544e5a0797a091d8aee2bae9d0f..7477f57ee0e7a104fa28ff09ec65a5c68f62f260 100644 --- a/src/config.py +++ b/src/config.py @@ -32,6 +32,7 @@ config_file = "config.sqlite3" logger = logging.getLogger() + class Config(SQL): def __init__(self): self._version = '0.0.3' @@ -40,15 +41,17 @@ class Config(SQL): logging.info(f"Configuration file : {self.filename}") - super(Config, self).__init__(filename = self.filename) + super(Config, self).__init__(filename=self.filename) def _create(self): # Info (meta data) - self.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + self.execute( + "CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") self.execute(f"INSERT INTO info VALUES ('version', '{self._version}')") # Key / Value (data) - self.execute("CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + self.execute( + "CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") # Solver self.execute(""" @@ -79,12 +82,15 @@ class Config(SQL): self.commit() - def _update(self): - version = self.execute(f"SELECT value FROM info WHERE key='version'")[0] + version = self.execute( + f"SELECT value FROM info WHERE key='version'")[0] if version != self._version: - logger.info(f"Configuration file update from {version} to {self._version}...") + logger.info( + "Configuration file update from " + + f"{version} to {self._version}..." + ) major, minor, release = version.strip().split(".") @@ -92,6 +98,8 @@ class Config(SQL): if int(release) < 2: # Add default solver posix = os.name == 'posix' + ext = "" if posix else ".exe" + self.execute(f""" INSERT INTO solver VALUES ( 'mage8', @@ -101,13 +109,14 @@ class Config(SQL): '', '', '', '', - '@install_dir/mage/mage{"" if posix else ".exe"} @args @input', + '@install_dir/mage/mage{ext} @args @input', '' ) """) if int(release) < 3: self.execute(f"INSERT INTO data VALUES ('last_study', '')") - self.execute(f"INSERT INTO data VALUES ('close_correctly', 'True')") + self.execute( + f"INSERT INTO data VALUES ('close_correctly', 'True')") self.commit() @@ -116,7 +125,7 @@ class Config(SQL): solvers = self.execute( "SELECT * FROM solver", - fetch_one = False + fetch_one=False ) for solver in solvers: solver_type = solver[0] @@ -139,7 +148,7 @@ class Config(SQL): id = 0 stricklers = self.execute( "SELECT * FROM stricklers", - fetch_one = False + fetch_one=False ) for strickler in stricklers: new = Stricklers() @@ -210,7 +219,7 @@ class Config(SQL): '{self._sql_format(solver._cmd_output)}' ) """, - commit = True) + commit=True) def _save_stricklers(self): self.execute(f"DELETE FROM stricklers") @@ -263,10 +272,12 @@ class Config(SQL): self._solvers = [] posix = os.name == 'posix' + ext = "" if posix else ".exe" + ctor = solver_type_list["mage8"] new = ctor("default-mage") new._description = "Default Pamhyr2 mage 8 version" - new._cmd_solver = f""""@install_dir/mage/mage{"" if posix else ".exe"}" @args @input""" + new._cmd_solver = f""""@install_dir/mage/mage{ext}" @args @input""" self._solvers.append(new) # Meshing tool @@ -300,14 +311,22 @@ class Config(SQL): def set_close_correctly(self): self.close_correctly = True - self.execute(f"UPDATE data SET value='True' WHERE key='close_correctly'") + self.execute( + f"UPDATE data SET value='True' WHERE key='close_correctly'") self.commit() def set_last_study(self, filename): self.last_study = filename self.close_correctly = False - self.execute(f"UPDATE data SET value='{self._sql_format(self.last_study)}' WHERE key='last_study'") - self.execute(f"UPDATE data SET value='{self.close_correctly}' WHERE key='close_correctly'") + self.execute( + "UPDATE data SET " + + f"value='{self._sql_format(self.last_study)}' " + + "WHERE key='last_study'" + ) + self.execute( + f"UPDATE data SET value='{self.close_correctly}' " + + "WHERE key='close_correctly'" + ) self.commit() @classmethod @@ -320,7 +339,7 @@ class Config(SQL): ndir = os.path.expanduser('~') + config_dir ndir = ndir.replace("/", "\\") - os.makedirs(ndir, exist_ok = True) + os.makedirs(ndir, exist_ok=True) file = ndir + config_file return file diff --git a/src/init.py b/src/init.py index a6eb3aa4119d4ce431afe57d23d1f3dad7302ada..9a2305f4cdf011795e0f333fde40962c5a00cdcb 100644 --- a/src/init.py +++ b/src/init.py @@ -16,7 +16,8 @@ # -*- coding: utf-8 -*- -import sys, os +import sys +import os import locale import logging @@ -53,13 +54,14 @@ try: handler.setFormatter(formatter) handler.setLevel(logging.DEBUG) logger.addHandler(handler) -except: - logger.error("Failed to create logfile...") +except Exception as e: + logger.error(f"Failed to create logfile... {e}") def legal_info(): "Display in stdout Pamhyr infomation about licence and version" - blue = lambda s: logger.info(f"{logger_color_blue()}{s}{logger_color_reset()}") + def blue(s): return logger.info( + f"{logger_color_blue()}{s}{logger_color_reset()}") blue("""`7MM\"""Mq. db `7MMM. ,MMF'`7MMF' `7MMF'`YMM' `MM'`7MM\"""Mq.""") blue(""" MM `MM. ;MM: MMMb dPMM MM MM VMA ,V MM `MM.""") @@ -76,11 +78,15 @@ def legal_info(): ) ), "r") as f: version = f.readline().strip() - logger.info(f"version: {logger_color_green()}{version}{logger_color_reset()}") + logger.info( + f"version: {logger_color_green()}{version}{logger_color_reset()}") logger.info("license: pamhyr Copyright (C) 2023 INRAE") logger.info("license: This program comes with ABSOLUTELY NO WARRANTY.") - logger.info("license: This is free software, and you are welcome to redistribute it") + logger.info( + "license: This is free software," + + " and you are welcome to redistribute it" + ) logger.info("license: under certain conditions.") @@ -90,9 +96,13 @@ def debug_info(): info = QLibraryInfo logger.debug(f"Qt PrefixPath: {info.location(QLibraryInfo.PrefixPath)}") - logger.debug(f"Qt LibExecPath: {info.location(QLibraryInfo.LibraryExecutablesPath)}") + logger.debug( + "Qt LibExecPath: " + + f"{info.location(QLibraryInfo.LibraryExecutablesPath)}" + ) + -def setup_lang(app, conf:Config): +def setup_lang(app, conf: Config): "Return QTranslator configured for current language" lang_file = "" translator = QTranslator() diff --git a/src/pamhyr.py b/src/pamhyr.py index 4ae6a7dcf06f3cb4efb6f029e3eba3210e9ce9fc..2381da01dc01068e7d8119809a010722416fb7e0 100755 --- a/src/pamhyr.py +++ b/src/pamhyr.py @@ -18,7 +18,8 @@ # -*- coding: utf-8 -*- -import sys, os +import sys +import os import locale import logging @@ -46,19 +47,24 @@ scripts = { "3DST": Script3DST, } + def usage(argv): logger.info("") logger.info(f"Usage: {argv[0]} <script> <args...>") logger.info("") - logger.info(f"Available scripts:") - logger.info(f"\thelp\t\tDisplay this message") - logger.info(f"\tgui\t\tRun Pamhyr graphics user interface (by default)") - logger.info(f"\tdebug\t\tRun Pamhyr graphics user interface as debug mode (for developers)") + logger.info("Available scripts:") + logger.info("\thelp\t\tDisplay this message") + logger.info("\tgui\t\tRun Pamhyr graphics user interface (by default)") + logger.info( + "\tdebug\t\tRun Pamhyr graphics user interface " + + "as debug mode (for developers)" + ) for s in scripts: logger.info(f"\t{s}\t\t{scripts[s].description}") logger.info("") -def gui(app:QApplication, conf:Config): + +def gui(app: QApplication, conf: Config): application = ApplicationWindow(conf=conf) application.show() @@ -66,6 +72,7 @@ def gui(app:QApplication, conf:Config): return app.exec_() + def main(): conf = Config.load() @@ -107,5 +114,6 @@ def main(): display_timers() sys.exit(ret) + if __name__ == "__main__": main() diff --git a/src/tools.py b/src/tools.py index 390e89f40ee1196edebcecccd07ba5e6db931e4e..d286345a2f3245258300e9fc0af04758102de2f2 100644 --- a/src/tools.py +++ b/src/tools.py @@ -39,24 +39,28 @@ from functools import ( logger = logging.getLogger() + def logger_color_blue(): posix = os.name == "posix" if posix: return f"{Style.BRIGHT}{Fore.BLUE}" return "" + def logger_color_red(): posix = os.name == "posix" if posix: return f"{Style.BRIGHT}{Fore.RED}" return "" + def logger_color_green(): posix = os.name == "posix" if posix: return f"{Style.BRIGHT}{Fore.GREEN}" return "" + def logger_color_reset(): posix = os.name == "posix" if posix: @@ -67,9 +71,11 @@ def logger_color_reset(): # TIMERS # ########## + _timers = {} _calls = {} + def reset_timers(): global _timers global _calls @@ -77,6 +83,7 @@ def reset_timers(): _timers = {} _calls = {} + def display_timers(): global _timers global _calls @@ -100,13 +107,15 @@ def display_timers(): lambda f: (f, _timers[f], _calls[f]), _timers ), - key = lambda f: f[1], - reverse = True + key=lambda f: f[1], + reverse=True ) for func, time, calls in lst: name = (f"{Fore.BLUE}{func.__module__}{Style.RESET_ALL}" + - f".{Style.BRIGHT}{Fore.GREEN}{func.__qualname__:<{fmax - len(func.__module__)}}{Style.RESET_ALL}") + f".{Style.BRIGHT}{Fore.GREEN}" + + f"{func.__qualname__:<{fmax - len(func.__module__)}}" + + f"{Style.RESET_ALL}") logger.debug(f" | {name} | {time:>10.6f} sec | {calls:>5} calls |") tail = " +--" @@ -115,6 +124,7 @@ def display_timers(): tail += "+" logger.debug(tail) + def timer(func): """Function wrapper to register function runtime""" @wraps(func) @@ -126,8 +136,10 @@ def timer(func): value = func(*args, **kwargs) except Exception as e: logger.debug(f"[{Fore.RED}ERROR{Style.RESET_ALL}]" + - f"[{func.__module__}.{Fore.GREEN}{func.__qualname__}{Style.RESET_ALL}]: " + - f"{Fore.RED}{e}{Style.RESET_ALL}") + f"[{func.__module__}.{Fore.GREEN}" + + f"{func.__qualname__}" + + f"{Style.RESET_ALL}]: " + + f"{Fore.RED}{e}{Style.RESET_ALL}") traceback.print_exc() end_time = time.perf_counter() @@ -147,18 +159,25 @@ def timer(func): # DEBUG # ######### + def trace(func): @wraps(func) def wrapper(*args, **kwargs): t = time.ctime() head = f"[{Fore.BLUE}TRACE{Style.RESET_ALL}]" - c = f"{head}[{t}] Call {func.__module__}.{Fore.GREEN}{func.__qualname__}{Style.RESET_ALL}({args}, {kwargs})" + c = ( + f"{head}[{t}] Call {func.__module__}.{Fore.GREEN}" + + f"{func.__qualname__}{Style.RESET_ALL}({args}, {kwargs})" + ) logger.debug(c) value = func(*args, **kwargs) t = time.ctime() - r = f"{head}[{t}] Return {func.__module__}.{Fore.GREEN}{func.__qualname__}{Style.RESET_ALL}: {value}" + r = ( + f"{head}[{t}] Return {func.__module__}.{Fore.GREEN}" + + f"{func.__qualname__}{Style.RESET_ALL}: {value}" + ) logger.debug(r) return value @@ -169,6 +188,7 @@ def trace(func): # OTHERS TOOLS # ################ + @timer def flatten(lst): """Flatten list of list @@ -184,14 +204,16 @@ def flatten(lst): return reduce(list.__add__, lst) -def timestamp(dt:datetime): + +def timestamp(dt: datetime): # Fix timestamp for some windows version. # - Issue : (https://bugs.python.org/issue29097) if os.name == 'nt': return (dt - datetime(1970, 1, 1)).total_seconds() return dt.timestamp() -def old_pamhyr_date_to_timestamp(date:str): + +def old_pamhyr_date_to_timestamp(date: str): v = date.split(":") if len(v) != 4: return 0 @@ -220,13 +242,14 @@ def old_pamhyr_date_to_timestamp(date:str): # This class is an abstract class to make class with save and load # from sqlite3. + class SQL(object): def _init_db_file(self, db): exists = Path(db).exists() os.makedirs( os.path.dirname(db), - exist_ok = True + exist_ok=True ) self._db = sqlite3.connect(db) @@ -239,8 +262,7 @@ class SQL(object): self._update() # Update db scheme if necessary self._load() # Load data - - def __init__(self, filename = None): + def __init__(self, filename=None): self._db = None if filename is not None: @@ -256,7 +278,7 @@ class SQL(object): def _fetch_tuple(self, tup): res = [] for v in tup: - if type(v) == str: + if v is str: v = self._fetch_string(v) res.append(v) @@ -265,9 +287,9 @@ class SQL(object): def _fetch_list(self, lst): res = [] for v in lst: - if type(v) == str: + if v is str: v = self._fetch_string(v) - elif type(v) == tuple: + elif v is tuple: v = self._fetch_tuple(v) res.append(v) @@ -280,21 +302,21 @@ class SQL(object): value = res.fetchall() res = value - if type(value) == list: + if value is list: res = self._fetch_list(value) - elif type(value) == tuple: + elif value is tuple: res = self._fetch_tuple(value) return res def _sql_format(self, value): # Replace ''' by ''' to preserve SQL injection - if type(value) == str: + if value is str: value = value.replace("'", "'") return value @timer - def execute(self, cmd, fetch_one = True, commit = False): + def execute(self, cmd, fetch_one=True, commit=False): logger.debug(f"SQL - {cmd}") res = self._cur.execute(cmd)