Commit 02c597d1 authored by Youcef Aouad's avatar Youcef Aouad
Browse files

LCS Complete

No related merge requests found
Pipeline #56085 passed with stages
in 59 seconds
Showing with 157 additions and 261 deletions
+157 -261
......@@ -49,7 +49,7 @@ class LateralContributionAdisTS(SQLSubModel):
self._begin_kp = 0.0
self._end_kp = 0.0
self._data = []
self._header = []
self._header = ["time", "rate"]
self._types = [float, float]
LateralContributionAdisTS._id_cnt = max(
......
......@@ -45,13 +45,13 @@ class SetDataCommand(QUndoCommand):
if self._column == 0:
self._data._data[self._index] = (self._old,self._data._data[self._index][1])
else:
self._data._data[self._index] = (self._data._data[self._index][1], self._old)
self._data._data[self._index] = (self._data._data[self._index][0], self._old)
def redo(self):
if self._column == 0:
self._data._data[self._index] = (self._new,self._data._data[self._index][1])
else:
self._data._data[self._index] = (self._data._data[self._index][1], self._new)
self._data._data[self._index] = (self._data._data[self._index][0], self._new)
class AddCommand(QUndoCommand):
def __init__(self, data, index):
......@@ -84,7 +84,7 @@ class DelCommand(QUndoCommand):
def undo(self):
for row, el in self._bc:
self._data.insert(row, el)
self._data._data.insert(row, el)
def redo(self):
for row in self._rows:
......
......@@ -31,7 +31,6 @@ _translate = QCoreApplication.translate
logger = logging.getLogger()
class Plot(PamhyrPlot):
def __init__(self, mode="time", data=None,
trad=None, canvas=None, toolbar=None,
......
......@@ -39,16 +39,11 @@ from PyQt5.QtWidgets import (
QTimeEdit, QDateTimeEdit, QItemDelegate,
)
from Model.LateralContribution.LateralContributionTypes import (
NotDefined, LateralContrib, Rain, Evaporation,
)
from View.LateralContribution.Edit.UndoCommand import (
from View.LateralContributionsAdisTS.Edit.UndoCommand import (
SetDataCommand, AddCommand, DelCommand,
SortCommand, MoveCommand, PasteCommand,
DuplicateCommand,
)
from View.LateralContribution.Edit.translate import *
from View.LateralContributionsAdisTS.Edit.translate import *
_translate = QCoreApplication.translate
......@@ -69,8 +64,8 @@ class TableModel(PamhyrTableModel):
value = QVariant()
if 0 <= column < 2:
v = self._data.get_i(row)[column]
if self._data.get_type_column(column) == float:
v = self._data._data[row][column]
if self._data._types[column] == float:
value = f"{v:.4f}"
elif self._data.header[column] == "time":
if self._opt_data == "time":
......@@ -125,69 +120,3 @@ class TableModel(PamhyrTableModel):
self.endRemoveRows()
def sort(self, _reverse, parent=QModelIndex()):
self.layoutAboutToBeChanged.emit()
self._undo.push(
SortCommand(
self._data, _reverse
)
)
self.layoutAboutToBeChanged.emit()
self.layoutChanged.emit()
def move_up(self, row, parent=QModelIndex()):
if row <= 0:
return
target = row + 2
self.beginMoveRows(parent, row - 1, row - 1, parent, target)
self._undo_stack.push(
MoveCommand(
self._data, "up", row
)
)
self.endMoveRows()
self.layoutChanged.emit()
def move_down(self, index, parent=QModelIndex()):
if row > len(self._data):
return
target = row
self.beginMoveRows(parent, row + 1, row + 1, parent, target)
self._undo_stack.push(
MoveCommand(
self._data, "down", row
)
)
self.endMoveRows()
self.layoutChanged.emit()
def paste(self, row, header, data):
if len(data) == 0:
return
self.layoutAboutToBeChanged.emit()
self._undo.push(
PasteCommand(
self._data, row,
list(
map(
lambda d: self._data.new_from_data(header, d),
data
)
)
)
)
self.layoutAboutToBeChanged.emit()
self.layoutChanged.emit()
......@@ -23,7 +23,7 @@ from PyQt5.QtWidgets import (
QMessageBox, QUndoCommand, QUndoStack,
)
from Model.LateralContribution.LateralContribution import LateralContribution
from Model.LateralContributionsAdisTS.LateralContributionAdisTS import LateralContributionAdisTS
class SetDataCommand(QUndoCommand):
......@@ -33,15 +33,21 @@ class SetDataCommand(QUndoCommand):
self._data = data
self._index = index
self._column = column
self._old = self._data.get_i(self._index)[self._column]
_type = self._data.get_type_column(self._column)
self._old = self._data._data[self._index][self._column]
_type = self._data._types[self._column]
self._new = _type(new_value)
def undo(self):
self._data._set_i_c_v(self._index, self._column, self._old)
if self._column == 0:
self._data._data[self._index] = (self._old, self._data._data[self._index][1])
else:
self._data._data[self._index] = (self._data._data[self._index][0], self._old)
def redo(self):
self._data._set_i_c_v(self._index, self._column, self._new)
if self._column == 0:
self._data._data[self._index] = (self._new, self._data._data[self._index][1])
else:
self._data._data[self._index] = (self._data._data[self._index][0], self._new)
class AddCommand(QUndoCommand):
......@@ -53,14 +59,13 @@ class AddCommand(QUndoCommand):
self._new = None
def undo(self):
self._data.delete_i([self._index])
del self._data._data[self._index]
def redo(self):
if self._new is None:
self._new = self._data.add(self._index)
self._new = self._data._data.insert(self._index, (self._data._types[0](0), self._data._types[1](0.0)))
else:
self._data.insert(self._index, self._new)
self._data._data.insert(self._index, self._new)
class DelCommand(QUndoCommand):
def __init__(self, data, rows):
......@@ -71,98 +76,13 @@ class DelCommand(QUndoCommand):
self._lc = []
for row in rows:
self._lc.append((row, self._data.get_i(row)))
self._lc.append((row, self._data._data[row]))
self._lc.sort()
def undo(self):
for row, el in self._lc:
self._data.insert(row, el)
def redo(self):
self._data.delete_i(self._rows)
class SortCommand(QUndoCommand):
def __init__(self, data, _reverse):
QUndoCommand.__init__(self)
self._data = data
self._reverse = _reverse
self._old = self._data.data
self._indexes = None
def undo(self):
ll = self._data.data
self._data.sort(
key=lambda x: self._indexes[ll.index(x)]
)
def redo(self):
self._data.sort(
_reverse=self._reverse,
key=lambda x: x[0]
)
if self._indexes is None:
self._indexes = list(
map(
lambda p: self._old.index(p),
self._data.data
)
)
self._old = None
class MoveCommand(QUndoCommand):
def __init__(self, data, up, i):
QUndoCommand.__init__(self)
self._data = data
self._up = up == "up"
self._i = i
def undo(self):
if self._up:
self._data.move_up(self._i)
else:
self._data.move_down(self._i)
def redo(self):
if self._up:
self._data.move_up(self._i)
else:
self._data.move_down(self._i)
class PasteCommand(QUndoCommand):
def __init__(self, data, row, lcs):
QUndoCommand.__init__(self)
self._data = data
self._row = row
self._lcs = lcs
self._lcs.reverse()
def undo(self):
self._data.delete(self._lcs)
def redo(self):
for bc in self._lcs:
self._data.insert(self._row, bc)
class DuplicateCommand(QUndoCommand):
def __init__(self, data, rows, bc):
QUndoCommand.__init__(self)
self._data = data
self._rows = rows
self._lc = deepcopy(bc)
self._lc.reverse()
def undo(self):
self._data.delete(self._lc)
self._data._data.insert(row, el)
def redo(self):
for bc in self._lcs:
self._data.insert(self._rows[0], bc)
for row in self._rows:
del self._data._data[row]
......@@ -39,16 +39,16 @@ from PyQt5.QtWidgets import (
from View.Tools.Plot.PamhyrCanvas import MplCanvas
from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
from View.LateralContribution.Edit.translate import LCETranslate
from View.LateralContribution.Edit.Table import TableModel
from View.LateralContribution.Edit.Plot import Plot
from View.LateralContributionsAdisTS.Edit.translate import LCETranslate
from View.LateralContributionsAdisTS.Edit.Table import TableModel
from View.LateralContributionsAdisTS.Edit.Plot import Plot
_translate = QCoreApplication.translate
class EditLateralContributionWindow(PamhyrWindow):
_pamhyr_ui = "EditLateralContribution"
_pamhyr_name = "Edit lateral contribution"
class EditLateralContributionAdisTSWindow(PamhyrWindow):
_pamhyr_ui = "EditLateralContributionAdisTS"
_pamhyr_name = "Edit lateral contribution AdisTS"
def __init__(self, data=None,
study=None, config=None,
......@@ -57,17 +57,8 @@ class EditLateralContributionWindow(PamhyrWindow):
trad = LCETranslate()
name = trad[self._pamhyr_name]
if self._data is not None:
edge_name = (self._data.edge.name if self._data.edge is not None
else trad['not_associated'])
name += (
f" - {study.name} " +
f" - {self._data.name} ({self._data.id}) " +
f"({trad.get_dict('long_types')[self._data.lctype]} - " +
f"{edge_name})"
)
super(EditLateralContributionWindow, self).__init__(
super(EditLateralContributionAdisTSWindow, self).__init__(
title=name,
study=study,
config=config,
......@@ -75,6 +66,17 @@ class EditLateralContributionWindow(PamhyrWindow):
parent=parent
)
if self._data is not None:
if self._data.edge is not None:
edge_name = next(filter(lambda edge: edge.id == self._data.edge, self._study.river.edges())).name
else:
edge_name = trad['not_associated']
name += (
f"{study.name} - " +
f"{edge_name})"
)
self._hash_data.append(data)
self.setup_table()
......@@ -134,7 +136,6 @@ class EditLateralContributionWindow(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_sort").triggered.connect(self.sort)
self._table.dataChanged.connect(self.update)
......@@ -176,46 +177,6 @@ class EditLateralContributionWindow(PamhyrWindow):
self._table.delete(rows)
self.plot.update()
def sort(self):
self._table.sort(False)
self.plot.update()
def move_up(self):
row = self.index_selected_row()
self._table.move_up(row)
self.plot.update()
def move_down(self):
row = self.index_selected_row()
self._table.move_down(row)
self.plot.update()
def _copy(self):
rows = self.index_selected_rows()
table = []
table.append(self._data.header)
data = self._data.data
for row in rows:
table.append(list(data[row]))
self.copyTableIntoClipboard(table)
def _paste(self):
header, data = self.parseClipboardTable()
if len(data) == 0:
return
row = 0
rows = self.index_selected_rows()
if len(rows) != 0:
row = rows[0]
self._table.paste(row, header, data)
self.plot.update()
def _undo(self):
self._table.undo()
self.plot.update()
......
......@@ -19,7 +19,7 @@
from PyQt5.QtCore import QCoreApplication
from View.Translate import MainTranslate
from View.LateralContribution.translate import LCTranslate
from View.LateralContributionsAdisTS.translate import LCTranslate
_translate = QCoreApplication.translate
......@@ -27,15 +27,12 @@ _translate = QCoreApplication.translate
class LCETranslate(LCTranslate):
def __init__(self):
super(LCETranslate, self).__init__()
self._dict["Edit lateral contribution"] = _translate(
"LateralContribution", "Edit lateral contribution"
self._dict["Edit lateral contribution AdisTS"] = _translate(
"LateralContributionAdisTS", "Edit lateral contribution AdisTS"
)
self._sub_dict["table_headers"] = {
"x": _translate("LateralContribution", "X"),
"y": _translate("LateralContribution", "Y"),
"time": self._dict["time"],
"date": self._dict["date"],
"discharge": self._dict["unit_discharge"],
"z": self._dict["unit_elevation"],
"rate": _translate("LateralContributionAdisTS", "Mass Flow"),
}
......@@ -48,7 +48,7 @@ from View.Geometry.PlotXY import PlotXY
from View.LateralContributionsAdisTS.translate import (
LCTranslate,
)
from View.LateralContributionsAdisTS.Edit.Window import EditLateralContributionWindow
from View.LateralContributionsAdisTS.Edit.Window import EditLateralContributionAdisTSWindow
logger = logging.getLogger()
......@@ -136,7 +136,6 @@ class LateralContributionAdisTSWindow(PamhyrWindow):
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)
self.find(QAction, "action_sort").triggered.connect(self.sort)
table = self.find(QTableView, f"tableView")
table.selectionModel()\
......@@ -233,18 +232,17 @@ class LateralContributionAdisTSWindow(PamhyrWindow):
self._set_current_reach()
def edit(self):
tab = self.current_tab()
rows = self.index_selected_rows()
for row in rows:
data = self._lcs.get(tab, row)
data = self._lcs.lst[row]
if self.sub_window_exists(
EditLateralContributionWindow,
EditLateralContributionAdisTSWindow,
data=[self._study, None, data]
):
continue
win = EditLateralContributionWindow(
win = EditLateralContributionAdisTSWindow(
data=data,
study=self._study,
parent=self
......
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>450</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="locale">
<locale language="English" country="Europe"/>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QSplitter" name="splitter">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QTableView" name="tableView"/>
<widget class="QWidget" name="verticalLayoutWidget">
<layout class="QVBoxLayout" name="verticalLayout"/>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="toolBar">
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="action_add"/>
<addaction name="action_del"/>
</widget>
<action name="action_add">
<property name="checkable">
<bool>false</bool>
</property>
<property name="icon">
<iconset>
<normaloff>ressources/add.png</normaloff>ressources/add.png</iconset>
</property>
<property name="text">
<string>Add</string>
</property>
<property name="toolTip">
<string>Add a new point in boundary condition or lateral contribution</string>
</property>
<property name="shortcut">
<string>Ctrl+N</string>
</property>
</action>
<action name="action_del">
<property name="icon">
<iconset>
<normaloff>ressources/del.png</normaloff>ressources/del.png</iconset>
</property>
<property name="text">
<string>Delete</string>
</property>
<property name="toolTip">
<string>Delete current selected rows</string>
</property>
<property name="shortcut">
<string>Ctrl+D</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
......@@ -69,7 +69,6 @@
<addaction name="action_add"/>
<addaction name="action_del"/>
<addaction name="action_edit"/>
<addaction name="action_sort"/>
</widget>
<action name="action_add">
<property name="checkable">
......@@ -119,18 +118,6 @@
<string>Ctrl+E</string>
</property>
</action>
<action name="action_sort">
<property name="icon">
<iconset>
<normaloff>ressources/sort_A-Z.png</normaloff>ressources/sort_A-Z.png</iconset>
</property>
<property name="text">
<string>Sort</string>
</property>
<property name="toolTip">
<string>Sort boundary condition by name</string>
</property>
</action>
</widget>
<resources/>
<connections/>
......
No preview for this file type
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment