Skip to content

Commit

Permalink
[fix] Better handle name of new components
Browse files Browse the repository at this point in the history
  • Loading branch information
Kastakin committed Jun 15, 2023
1 parent 98dcc99 commit 3871ee8
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 36 deletions.
4 changes: 4 additions & 0 deletions src/main/python/pyes/commands/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ def undo(self) -> None:
self.position + self.number + 8,
self.number,
table,
self.comp_model._data["Name"].tolist(),
)
self.conc_model.removeRows(self.position + self.number, self.number)
self.cleanup()
Expand All @@ -238,6 +239,7 @@ def redo(self) -> None:
self.position + 8,
self.number,
table,
self.comp_model._data["Name"].tolist(),
)

self.conc_model.insertRows(self.position, self.number)
Expand Down Expand Up @@ -293,6 +295,7 @@ def undo(self) -> None:
self.position - self.number + 8,
self.number,
table,
self.comp_model._data["Name"].tolist(),
)

model._data.iloc[
Expand Down Expand Up @@ -327,6 +330,7 @@ def redo(self) -> None:
self.position + 8,
self.number,
table,
self.comp_model._data["Name"].tolist(),
)

self.conc_model.removeRows(self.position, self.number)
Expand Down
35 changes: 19 additions & 16 deletions src/main/python/pyes/utils_func.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@
from viewmodels.delegate import ComboBoxDelegate


def addSpeciesComp(position: int, added_rows: int, view: QTableView):
def addSpeciesComp(position: int, added_rows: int, view: QTableView, comp_names):
view.setItemDelegateForColumn(view.model().columnCount() - 1, None)
view.model().insertColumns(position, added_rows)
view.setItemDelegateForColumn(
view.model().columnCount() - 1,
ComboBoxDelegate(view, view.model()._data["Name"].tolist()),
ComboBoxDelegate(view, comp_names),
)


def removeSpeciesComp(position: int, removed_rows: int, view: QTableView):
model = view.model()
view.setItemDelegateForColumn(model.columnCount() - 1, None)
model.removeColumns(position, removed_rows)
def removeSpeciesComp(position: int, removed_rows: int, view: QTableView, comp_names):
view.setItemDelegateForColumn(view.model().columnCount() - 1, None)
view.model().removeColumns(position, removed_rows)
view.setItemDelegateForColumn(
model.columnCount() - 1,
ComboBoxDelegate(view, model._data["Name"].tolist()),
view.model().columnCount() - 1,
ComboBoxDelegate(view, comp_names),
)


Expand Down Expand Up @@ -117,13 +116,17 @@ def updateIndComponent(comp_model: QAbstractItemModel, components_combobox: QCom
old_selected = components_combobox.currentIndex()
if old_selected < 0:
old_selected = 0

components_combobox.blockSignals(True)
components_combobox.clear()
components_combobox.addItems(comp_model._data["Name"])
components_combobox.blockSignals(False)

num_elements = components_combobox.count()
if num_elements >= old_selected:
if num_elements > old_selected:
components_combobox.setCurrentIndex(old_selected)
else:
components_combobox.setCurrentIndex(num_elements)
components_combobox.setCurrentIndex(num_elements - 1)


def cleanData():
Expand All @@ -135,17 +138,17 @@ def cleanData():
conc_data = pd.DataFrame(
[[0.0 for x in range(4)]],
columns=["C0", "CT", "Sigma C0", "Sigma CT"],
index=["COMP1"],
index=["A"],
)
comp_data = pd.DataFrame(
[["COMP1", 0]],
[["A", 0]],
columns=[
"Name",
"Charge",
],
)
species_data = pd.DataFrame(
[[False] + [""] + [0.0 for x in range(6)] + [int(0)] + ["COMP1"]],
[[False] + [""] + [0.0 for x in range(6)] + [int(0)] + ["A"]],
columns=[
"Ignored",
"Name",
Expand All @@ -155,12 +158,12 @@ def cleanData():
"CG",
"DG",
"EG",
"COMP1",
"A",
"Ref. Comp.",
],
)
solid_species_data = pd.DataFrame(
[[False] + [""] + [0.0 for x in range(6)] + [int(0)] + ["COMP1"]],
[[False] + [""] + [0.0 for x in range(6)] + [int(0)] + ["A"]],
columns=[
"Ignored",
"Name",
Expand All @@ -170,7 +173,7 @@ def cleanData():
"CG",
"DG",
"EG",
"COMP1",
"A",
"Ref. Comp.",
],
).drop(0)
Expand Down
39 changes: 33 additions & 6 deletions src/main/python/pyes/viewmodels/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# to display tabular data

import re
import string
from itertools import permutations

import pandas as pd
from commands import ComponentsCellEdit, SpeciesCellEdit
Expand Down Expand Up @@ -33,7 +35,6 @@ def insertRows(
ignore_index=True,
)
else:
# for row in range(rows):
self._data = pd.concat(
[self._data[:position], empty_rows, self._data[position:]],
ignore_index=True,
Expand Down Expand Up @@ -176,6 +177,13 @@ def setPreviousIndependentComponent(self, index: int):

class ComponentsModel(GenericModel):
def __init__(self, data: pd.DataFrame, undo_stack: QUndoStack):
self.default_names = set(
"".join(x) for x in permutations(string.ascii_uppercase, 2)
)
self.default_names.update(
set("".join(x) for x in permutations(string.ascii_uppercase, 3))
)
self.default_names.update(set(string.ascii_uppercase))
super().__init__(data, undo_stack)

def data(self, index, role: Qt.ItemDataRole = Qt.ItemDataRole.DisplayRole):
Expand Down Expand Up @@ -215,8 +223,19 @@ def setData(self, index, value, role):

def insertRows(self, position, rows=1, index=QModelIndex()) -> bool:
"""Insert a row into the model."""
new_names = sorted(
self.default_names.difference(self._data["Name"].to_list()),
key=lambda item: (len(item), item),
)[:rows]

empty_rows = pd.DataFrame(
[["COMP" + str(position + row + 1)] + [0] for row in range(rows)],
[
[
new_names[i],
0,
]
for i in range(rows)
],
columns=self._data.columns,
)

Expand Down Expand Up @@ -344,10 +363,18 @@ def insertColumns(self, position, columns=1, index=QModelIndex()):
"""Add columns to the model"""
self.beginInsertColumns(index, position, position + columns - 1)

for column in range(columns):
self._data.insert(
position + column, "COMP" + str(position + column), int(0)
)
empty_columns = pd.DataFrame(
[[0 for column in range(columns)]], index=self._data.index
)
self._data = pd.concat(
[
self._data.iloc[:, :position],
empty_columns,
self._data.iloc[:, position:],
],
axis=1,
ignore_index=True,
)

self.endInsertColumns()
self.layoutChanged.emit()
Expand Down
14 changes: 0 additions & 14 deletions src/main/python/pyes/windows/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -1083,20 +1083,6 @@ def plotDist(self, data):
self.PlotWindow = PlotWindow(self)
self.PlotWindow.show()

def relErrorsUpdater(self, checked):
"""
If relative errors aren't requested
gray out the corresponding columns in tableviews.
"""
if checked:
self.speciesView.model().setColumnReadOnly([3], False)
self.solidSpeciesView.model().setColumnReadOnly([3], False)
self.concView.model().setColumnReadOnly([2, 3], False)
else:
self.speciesView.model().setColumnReadOnly([3], True)
self.solidSpeciesView.model().setColumnReadOnly([3], True)
self.concView.model().setColumnReadOnly([2, 3], True)

def v0Updater(self, value):
self.initv.setMinimum(value)

Expand Down

0 comments on commit 3871ee8

Please sign in to comment.