geometry: Profile: Start to adapt profile window.

mesh
Pierre-Antoine Rouby 2023-04-21 15:08:47 +02:00
parent a055c80dce
commit a9c57a9512
6 changed files with 130 additions and 225 deletions

View File

@ -6,7 +6,7 @@ class Profile(object):
def __init__(self, num: int = 0, def __init__(self, num: int = 0,
kp:float = 0.0, name:str = "", kp:float = 0.0, name:str = "",
code1: int = 0, code2: int = 0, code1: int = 0, code2: int = 0,
_type:str = ""): _type:str = "", reach = None):
super(Profile, self).__init__() super(Profile, self).__init__()
self._num = int(num) self._num = int(num)
@ -14,11 +14,16 @@ class Profile(object):
self._code2 = int(code2) self._code2 = int(code2)
self._kp = float(kp) self._kp = float(kp)
self._name = str(name) self._name = str(name)
self._reach = reach
self._points: List[Point] = [] self._points: List[Point] = []
self._profile_type = _type self._profile_type = _type
@property
def reach(self):
return self._reach
@property @property
def num(self): def num(self):
""" """

View File

@ -12,7 +12,8 @@ class ProfileXYZ(Profile):
def __init__(self, num: int = 0, def __init__(self, num: int = 0,
code1: int = 0, code2: int = 0, code1: int = 0, code2: int = 0,
nb_point: int = 0, nb_point: int = 0,
kp: float = 0., name: str = ""): kp: float = 0., name: str = "",
reach = None):
"""ProfileXYZ constructor """ProfileXYZ constructor
Args: Args:
@ -31,6 +32,7 @@ class ProfileXYZ(Profile):
kp = kp, kp = kp,
code1 = code1, code2 = code2, code1 = code1, code2 = code2,
_type = "XYZ", _type = "XYZ",
reach = reach,
) )
def __repr__(self): def __repr__(self):

View File

@ -81,7 +81,7 @@ class Reach:
Returns: Returns:
Nothing. Nothing.
""" """
profile = ProfileXYZ() profile = ProfileXYZ(reach=self)
self._profiles.insert(index, profile) self._profiles.insert(index, profile)
self._update_profile_numbers() self._update_profile_numbers()
@ -306,7 +306,7 @@ class Reach:
if list_profile and list_header: if list_profile and list_header:
for ind, profile in enumerate(list_profile): for ind, profile in enumerate(list_profile):
prof = ProfileXYZ(*list_header[ind]) prof = ProfileXYZ(*list_header[ind], reach=self)
prof.import_points(profile) prof.import_points(profile)
self._profiles.append(prof) self._profiles.append(prof)
self._update_profile_numbers() self._update_profile_numbers()

View File

@ -26,10 +26,10 @@ from View.Geometry.PlotXY import PlotXY
from View.Geometry.PlotKPC import PlotKPC from View.Geometry.PlotKPC import PlotKPC
from View.Geometry.PlotAC import PlotAC from View.Geometry.PlotAC import PlotAC
from View.ASubWindow import WindowToolKit
from View.Geometry.mainwindow_ui_reach import Ui_MainWindow from View.Geometry.mainwindow_ui_reach import Ui_MainWindow
from View.Geometry import qtableview_reach from View.Geometry import qtableview_reach
from View.Geometry import window_profileXYZ from View.Geometry.Profile.ProfileWindow import ProfileWindow
from View.ASubWindow import WindowToolKit
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
@ -49,7 +49,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView_header = self.ui.tableView_header self.tableView_header = self.ui.tableView_header
self._tablemodel = None self._tablemodel = None
self._profile_window = []
self._clipboard = None self._clipboard = None
self.setup_window() self.setup_window()
@ -156,77 +156,20 @@ class GeometryWindow(QMainWindow, WindowToolKit):
print('OK clicked') print('OK clicked')
def edit_profile(self): def edit_profile(self):
list_selected_row = list(
set([index.row() for index in self.tableView.selectedIndexes()])
)
self.tableView.model().blockSignals(True) self.tableView.model().blockSignals(True)
if len(list_selected_row) > 5: for index in self.tableView.selectedIndexes():
self.messagebox_profile_editing() profile = self._reach.profile(index.row())
for selected_row in list_selected_row[:5]: self._profile_window.append(
selected_row = int(selected_row) ProfileWindow(
profile_identifier = self._reach.get_profile_selected_identifier(selected_row) profile = profile,
kp = self._reach.profile(selected_row).kp parent = self,
profile_name = self._reach.get_profile_name(selected_row)
if len(self.list_second_window) == 0:
self.second_window = window_profileXYZ.View(
selected_row + 1,
self._reach.get_profile_via_identifier(profile_identifier),
kp=kp, profile_name="", parent=self
) )
self.second_window.window_title( )
kp=kp,
profile_name=profile_name,
profile_selected_num=selected_row
)
self.second_window.setWindowFlags(Qt.Window | Qt.WindowStaysOnTopHint)
self.list_second_window.append(self.second_window)
self.second_window.show()
self.list_row.append(profile_identifier)
else:
if profile_identifier in self.list_row:
self.list_second_window[self.list_row.index(profile_identifier)]\
.window_title(
kp=kp, profile_name=profile_name,
profile_selected_num=selected_row
)
self.list_second_window[
self.list_row.index(profile_identifier)
].setWindowFlags(Qt.Window | Qt.WindowStaysOnTopHint)
self.list_second_window[
self.list_row.index(profile_identifier)
].show()
else:
second_window1 = window_profileXYZ.View(
selected_row + 1,
self._reach.get_profile_via_identifier(profile_identifier),
kp=kp, profile_name="", parent=self
)
second_window1.window_title(
kp=kp, profile_name=profile_name,
profile_selected_num=selected_row
)
second_window1.setWindowFlags(Qt.Window | Qt.WindowStaysOnTopHint)
second_window1.show()
self.list_row.append(profile_identifier)
self.list_second_window.append(second_window1)
widgetList = QApplication.topLevelWidgets()
numWindows = len(widgetList)
self.tableView.model().blockSignals(False) self.tableView.model().blockSignals(False)
def wind_profile_changed(self):
self.second_window\
.datachanged_signal[bool]\
.connect(self.changed_profile_slot)
pyqtSlot(bool) pyqtSlot(bool)
def changed_profile_slot(self, status): def changed_profile_slot(self, status):

View File

@ -7,64 +7,61 @@ from PyQt5 import QtWidgets, QtGui
from PyQt5.QtCore import QModelIndex, Qt, QEvent, QCoreApplication from PyQt5.QtCore import QModelIndex, Qt, QEvent, QCoreApplication
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QCheckBox from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QCheckBox
from View.Geometry.mainwindow_ui_profile import Ui_MainWindow from View.Geometry.Profile.mainwindow_ui_profile import Ui_MainWindow
from Model.Geometry.Reach import Reach from Model.Geometry.Reach import Reach
from View.Geometry.qtableview_profile import * from Model.Geometry.ProfileXYZ import ProfileXYZ
from View.Geometry.Profile.qtableview_profile import *
from View.Plot.mpl_canvas_onpick_event import OnpickEvent from View.Plot.mpl_canvas_onpick_event import OnpickEvent
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
class View(QMainWindow): class ProfileWindow(QMainWindow):
def __init__(self, profile_selected_num: int = 1, def __init__(self, profile=None, parent=None):
profile=None, pk=None, profile_name=None,
parent=None):
self.parent = parent self.parent = parent
super(ProfileWindow, self).__init__(self.parent)
super(View, self).__init__(self.parent)
self.ui = Ui_MainWindow() self.ui = Ui_MainWindow()
self.ui.setupUi(self) self.ui.setupUi(self)
self.tableView = self.ui.tableView
self.my_canvas = self.ui.my_canvas
self.profile_selected_num = profile_selected_num
self.pk = pk self._profile = profile
self.profile_name = profile_name self._model = None
self.profile_selected = profile
self.window_title(self.pk, self.profile_name, self.profile_selected_num)
self.setup_window()
self.setup_model() self.setup_model()
self.setup_connections() self.setup_connections()
self.graph() self.graph()
self.model.dataChanged.connect(self.graph) self._model.dataChanged.connect(self.graph)
self.filters = "CSV files (*.csv)" self.filters = "CSV files (*.csv)"
self.fileName = None self.fileName = None
self.tableView.installEventFilter(self) self.ui.tableView.installEventFilter(self)
self.status_change_tableview = False self.status_change_tableview = False
self.model.dataChanged.connect(self.tableview_is_modified) self._model.dataChanged.connect(self.tableview_is_modified)
self.reference_data = None self.reference_data = None
self.ui.btn_go_back.setEnabled(False) self.ui.btn_go_back.setEnabled(False)
self.ui.btn_check.setEnabled(False) self.ui.btn_check.setEnabled(False)
self.model.dataChanged.connect(self.set_enable_cancel_btn) self._model.dataChanged.connect(self.set_enable_cancel_btn)
self.model.dataChanged.connect(self.set_enable_validate_changes_btn) self._model.dataChanged.connect(self.set_enable_validate_changes_btn)
self.ui.btn_reset.setEnabled(False) self.ui.btn_reset.setEnabled(False)
self.model.dataChanged.connect(self.set_enable_go_back_initial_state_btn) self._model.dataChanged.connect(self.set_enable_go_back_initial_state_btn)
def setup_window(self):
name = self._profile.name
if self._profile.name is None or self._profile.name:
name = _translate("MainWindowProfile", "(no name)")
header = _translate("MainWindowProfile", "Profile")
def window_title(self, pk, profile_name=None, profile_selected_num=None):
if profile_name is None or profile_name == "":
profile_name = _translate("MainWindowProfile", "(sans nom)")
self.setWindowTitle( self.setWindowTitle(
_translate("MainWindowProfile", header + " - " +
f"Profil Pk = {pk} \t Section {profile_name} " f"{self._profile.reach.name}" + " - " +
f"N°: {profile_selected_num + 1} (selon " f"{name} ({self._profile.kp})"
f"l'ordre du tableau)")
) )
def tableview_is_modified(self): def tableview_is_modified(self):
@ -87,45 +84,38 @@ class View(QMainWindow):
self.ui.btn_reset.clicked.connect(self.go_back_to_initial_state) self.ui.btn_reset.clicked.connect(self.go_back_to_initial_state)
def setup_model(self): def setup_model(self):
if self.profile_selected is None: self._model = qtableview_profile.PandasModelEditable(self._profile)
bief = reach.Bief("../../resources/Fichier_ST/Saar.ST") self._last_saved_model_data = copy.deepcopy(self._model.model_data)
profile_num = 0 self.__initial_model_data = copy.deepcopy(self._model.model_data)
self.profile_default = bief.profile[profile_num]
self.window_title(bief.profile[0].pk, bief.profile[0].name, profile_num + 1)
self.model = qtableview_profile.PandasModelEditable(self.profile_default)
else:
self.model = qtableview_profile.PandasModelEditable(self.profile_selected)
self._last_saved_model_data = copy.deepcopy(self.model.model_data)
self.__initial_model_data = copy.deepcopy(self.model.model_data)
self.tableView.setModel(self.model) self.ui.tableView.setModel(self._model)
self.tableView.setItemDelegate(qtableview_profile.Delegate()) self.ui.tableView.setItemDelegate(qtableview_profile.Delegate())
def graph(self): def graph(self):
""" """
Returns: Le tracé de la cote z en fonction de l'abscisse (calculée). Returns: Le tracé de la cote z en fonction de l'abscisse (calculée).
""" """
x = self.model.station # abscisse en travers x = self._model.station # abscisse en travers
y = self.model.z # cote z y = self._model.z # cote z
ld = self.model.name # nom des points ld = self._model.name # nom des points
x_carto = self.model.x # x 'cartographique' x_carto = self._model.x # x 'cartographique'
y_carto = self.model.y # y 'cartographique' y_carto = self._model.y # y 'cartographique'
if len(self.model.x) >= 3 and len(self.model.y) >= 3 and len(self.model.station) >= 3: if len(self._model.x) >= 3 and len(self._model.y) >= 3 and len(self._model.station) >= 3:
self.my_canvas.axes.cla() self.ui.canvas.axes.cla()
self.my_canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5) self.ui.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
self.profile_line2D, = self.my_canvas.axes.plot( self.profile_line2D, = self.ui.canvas.axes.plot(
x, y, color='r', lw=1.5, markersize=7, marker='+', x, y, color='r', lw=1.5, markersize=7, marker='+',
picker=30 picker=30
) )
self.my_canvas.axes.set_xlabel( self.ui.canvas.axes.set_xlabel(
_translate("MainWindowProfile", _translate("MainWindowProfile",
"Abscisse en travers (m)"), "Abscisse en travers (m)"),
color='black', color='black',
fontsize=10 fontsize=10
) )
self.my_canvas.axes.set_ylabel( self.ui.canvas.axes.set_ylabel(
_translate("MainWindowProfile", "Cote (m)"), _translate("MainWindowProfile", "Cote (m)"),
color='black', fontsize=10 color='black', fontsize=10
) )
@ -133,7 +123,7 @@ class View(QMainWindow):
# Add label on graph # Add label on graph
self.annotation = [] self.annotation = []
for i, txt in enumerate(list(ld)): for i, txt in enumerate(list(ld)):
annotation = self.my_canvas.axes.annotate( annotation = self.ui.canvas.axes.annotate(
txt, (x[i], y[i]), txt, (x[i], y[i]),
horizontalalignment='left', horizontalalignment='left',
verticalalignment='top', verticalalignment='top',
@ -157,40 +147,40 @@ class View(QMainWindow):
arrowprops=arrowprops, arrowprops=arrowprops,
) )
self.my_canvas.axes.annotate("", (1, 0), xytext=(-al, 0), **kwargs) self.ui.canvas.axes.annotate("", (1, 0), xytext=(-al, 0), **kwargs)
self.my_canvas.axes.annotate("", (0, 1), xytext=(0, -al), **kwargs) # left spin arrow self.ui.canvas.axes.annotate("", (0, 1), xytext=(0, -al), **kwargs) # left spin arrow
self.my_canvas.axes.spines[['top', 'right']].set_color('none') self.ui.canvas.axes.spines[['top', 'right']].set_color('none')
self.my_canvas.axes.yaxis.tick_left() self.ui.canvas.axes.yaxis.tick_left()
self.my_canvas.axes.xaxis.tick_bottom() self.ui.canvas.axes.xaxis.tick_bottom()
self.my_canvas.axes.set_facecolor('#F9F9F9') # '#E0FFFF') self.ui.canvas.axes.set_facecolor('#F9F9F9') # '#E0FFFF')
self.my_canvas.figure.patch.set_facecolor('white') self.ui.canvas.figure.patch.set_facecolor('white')
try: try:
self.onpick_event = OnpickEvent(self.my_canvas.axes, x, y, x_carto, y_carto, self.tableView) self.onpick_event = OnpickEvent(self.ui.canvas.axes, x, y, x_carto, y_carto, self.ui.tableView)
self.my_canvas.figure.canvas.mpl_connect('pick_event', self.onpick_event.onpick) self.ui.canvas.figure.canvas.mpl_connect('pick_event', self.onpick_event.onpick)
self.onclick_event = OnpickEvent(self.my_canvas.axes, x, y, x_carto, y_carto, self.tableView) self.onclick_event = OnpickEvent(self.ui.canvas.axes, x, y, x_carto, y_carto, self.ui.tableView)
self.my_canvas.figure.canvas.mpl_connect('button_press_event', self.onclick_event.onclick) self.ui.canvas.figure.canvas.mpl_connect('button_press_event', self.onclick_event.onclick)
except: except:
print("TODO") print("TODO")
self.my_canvas.figure.tight_layout() self.ui.canvas.figure.tight_layout()
self.my_canvas.figure.canvas.draw_idle() self.ui.canvas.figure.canvas.draw_idle()
else: else:
self.my_canvas.axes.cla() self.ui.canvas.axes.cla()
self.my_canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5) self.ui.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
def insert_row(self): def insert_row(self):
if len(self.tableView.selectedIndexes()) == 0: if len(self.ui.tableView.selectedIndexes()) == 0:
self.model.insertRows(self.model.rowCount(), 1) self._model.insertRows(self._model.rowCount(), 1)
else: else:
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
for row in rows: # [::-1]: for row in rows: # [::-1]:
self.model.insertRows(row + 1, 1) self._model.insertRows(row + 1, 1)
try: try:
self.graph() # mise à jour du graphique self.graph()
except: except:
pass pass
@ -200,10 +190,10 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def delete_row(self): def delete_row(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
if len(rows) > 0: if len(rows) > 0:
self.model.remove_rows(rows) self._model.remove_rows(rows)
try: try:
self.graph() self.graph()
@ -216,7 +206,7 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def sort_X_ascending(self): def sort_X_ascending(self):
self.model.sort(0, order=Qt.AscendingOrder) self._model.sort(0, order=Qt.AscendingOrder)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
self.ui.btn_check.setEnabled(True) self.ui.btn_check.setEnabled(True)
@ -224,7 +214,7 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def sort_X_descending(self): def sort_X_descending(self):
self.model.sort(0, order=Qt.DescendingOrder) self._model.sort(0, order=Qt.DescendingOrder)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
self.ui.btn_check.setEnabled(True) self.ui.btn_check.setEnabled(True)
@ -232,7 +222,7 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def sort_Y_ascending(self): def sort_Y_ascending(self):
self.model.sort(1, order=Qt.AscendingOrder) self._model.sort(1, order=Qt.AscendingOrder)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
self.ui.btn_check.setEnabled(True) self.ui.btn_check.setEnabled(True)
@ -240,7 +230,7 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def sort_Y_descending(self): def sort_Y_descending(self):
self.model.sort(1, order=Qt.DescendingOrder) self._model.sort(1, order=Qt.DescendingOrder)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
self.ui.btn_check.setEnabled(True) self.ui.btn_check.setEnabled(True)
@ -248,11 +238,11 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def move_row_down(self): def move_row_down(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
for row in rows: for row in rows:
if row < self.model.rowCount() - 1: if row < self._model.rowCount() - 1:
self.model.moveRowDown(row) self._model.moveRowDown(row)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
@ -261,11 +251,11 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def move_row_up(self): def move_row_up(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
for row in rows: for row in rows:
if 0 < row: if 0 < row:
self.model.moveRowUp(row) self._model.moveRowUp(row)
self.graph() self.graph()
self.status_change_tableview = True self.status_change_tableview = True
@ -288,7 +278,7 @@ class View(QMainWindow):
copyAction = menu.addAction('Copy') copyAction = menu.addAction('Copy')
pasteAction = menu.addAction('Paste') pasteAction = menu.addAction('Paste')
if not self.tableView.selectedIndexes(): if not self.ui.tableView.selectedIndexes():
pass pass
return True return True
@ -297,7 +287,7 @@ class View(QMainWindow):
def copySelection(self): def copySelection(self):
self.clipboard.clear() self.clipboard.clear()
selected = self.tableView.selectedIndexes() selected = self.ui.tableView.selectedIndexes()
rows = [] rows = []
columns = [] columns = []
@ -318,50 +308,50 @@ class View(QMainWindow):
if not self.clipboard: if not self.clipboard:
return return
current = self.tableView.currentIndex() current = self.ui.tableView.currentIndex()
if not current.isValid(): if not current.isValid():
# In the rare case that there is no current index, use the # In the rare case that there is no current index, use the
# first row and column as target # first row and column as target
current = self.model.index(0, 0) current = self._model.index(0, 0)
firstRow = current.row() firstRow = current.row()
firstColumn = current.column() firstColumn = current.column()
# optional: Get the selection model so that pasted indexes # optional: Get the selection model so that pasted indexes
# will be automatically selected at the end # will be automatically selected at the end
selection = self.tableView.selectionModel() selection = self.ui.tableView.selectionModel()
for row, column, data in self.clipboard: for row, column, data in self.clipboard:
# Get the index, with rows and columns relative to the # Get the index, with rows and columns relative to the
# current index = self.model.index(firstRow + row, # current index = self._model.index(firstRow + row,
# firstColumn + column) # firstColumn + column)
index = self.model.index(firstRow, column) index = self._model.index(firstRow, column)
# Set the profile for the index # Set the profile for the index
self.model.setData(index, data, Qt.EditRole) self._model.setData(index, data, Qt.EditRole)
# Add the index to the selection # Add the index to the selection
selection.select(index, selection.Select) selection.select(index, selection.Select)
# Apply the selection model # Apply the selection model
self.tableView.setSelectionModel(selection) self.ui.tableView.setSelectionModel(selection)
def copyTable(self): def copyTable(self):
if len(self.tableView.selectedIndexes()) == 0: if len(self.ui.tableView.selectedIndexes()) == 0:
self.model.copyTable(0, self.model.rowCount()) self._model.copyTable(0, self._model.rowCount())
else: else:
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
rows.sort() rows.sort()
df = self.model.model_data.loc[rows, :] df = self._model.model_data.loc[rows, :]
df.to_clipboard(header=None, index=False, excel=True, sep='\t') df.to_clipboard(header=None, index=False, excel=True, sep='\t')
def pasteTable(self): def pasteTable(self):
if len(self.tableView.selectedIndexes()) == 0: if len(self.ui.tableView.selectedIndexes()) == 0:
self.model.pasteTable(self.model.rowCount()) self._model.pasteTable(self._model.rowCount())
else: else:
rows = list(set([index.row() for index in self.tableView.selectedIndexes()])) rows = list(set([index.row() for index in self.ui.tableView.selectedIndexes()]))
for row in rows: for row in rows:
try: try:
self.model.pasteTable(row + 1) self._model.pasteTable(row + 1)
except: except:
print("TODO") print("TODO")
@ -384,10 +374,10 @@ class View(QMainWindow):
quoting=csv.QUOTE_NONNUMERIC, quoting=csv.QUOTE_NONNUMERIC,
lineterminator='\n') lineterminator='\n')
for row in range(self.model.rowCount(QModelIndex())): for row in range(self._model.rowCount(QModelIndex())):
rowdata = [] rowdata = []
for column in range(self.model.columnCount(QModelIndex())): for column in range(self._model.columnCount(QModelIndex())):
item = self.model.index( item = self._model.index(
row, column, QModelIndex() row, column, QModelIndex()
).data(Qt.DisplayRole) ).data(Qt.DisplayRole)
@ -412,25 +402,25 @@ class View(QMainWindow):
row[0] = QCheckBox("-") row[0] = QCheckBox("-")
buf.append(row) buf.append(row)
self.model = None self._model = None
self.model = qtableview_profile.PandasModelEditable(buf) self._model = qtableview_profile.PandasModelEditable(buf)
self.tableView.setModel(self.model) self.ui.tableView.setModel(self._model)
self.fileName = '' self.fileName = ''
def cancel_validate_changes(self): def cancel_validate_changes(self):
self.model.model_data = copy.deepcopy(self._last_saved_model_data) self._model.model_data = copy.deepcopy(self._last_saved_model_data)
self.graph() self.graph()
self.ui.btn_go_back.setEnabled(False) self.ui.btn_go_back.setEnabled(False)
def validate_changes(self): def validate_changes(self):
self.remove_duplicates_point_names() self.remove_duplicates_point_names()
self.delete_empty_rows() self.delete_empty_rows()
self._last_saved_model_data = copy.deepcopy(self.model.model_data) self._last_saved_model_data = copy.deepcopy(self._model.model_data)
self.ui.btn_check.setEnabled(False) self.ui.btn_check.setEnabled(False)
self.ui.btn_go_back.setEnabled(False) self.ui.btn_go_back.setEnabled(False)
self.status_change_tableview = False self.status_change_tableview = False
self.graph() self.graph()
self.model.valide_all_changes() self._model.valide_all_changes()
self.parent.update_graphic_2() self.parent.update_graphic_2()
self.parent.update_graphic_1() self.parent.update_graphic_1()
self.selected_row = list(set( self.selected_row = list(set(
@ -448,7 +438,7 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(True) self.ui.btn_reset.setEnabled(True)
def delete_empty_rows(self): def delete_empty_rows(self):
if self.model.data_contains_nan(): if self._model.data_contains_nan():
buttonReply = QtWidgets.QMessageBox.question( buttonReply = QtWidgets.QMessageBox.question(
self, self,
_translate("MainWindowProfile", _translate("MainWindowProfile",
@ -460,7 +450,7 @@ class View(QMainWindow):
) )
if buttonReply == QtWidgets.QMessageBox.Yes: if buttonReply == QtWidgets.QMessageBox.Yes:
self.model.delete_empty_rows() self._model.delete_empty_rows()
if buttonReply == QtWidgets.QMessageBox.No: if buttonReply == QtWidgets.QMessageBox.No:
pass pass
@ -469,7 +459,7 @@ class View(QMainWindow):
counter_list = [] counter_list = []
list_deleted_names = [] list_deleted_names = []
for ind, name_point in enumerate(self.model.name): for ind, name_point in enumerate(self._model.name):
if name_point not in counter_list: if name_point not in counter_list:
counter_list.append(name_point) counter_list.append(name_point)
elif len(name_point.strip()) > 0 and name_point in counter_list: elif len(name_point.strip()) > 0 and name_point in counter_list:
@ -494,8 +484,8 @@ class View(QMainWindow):
) )
if reply == QtWidgets.QMessageBox.Yes: if reply == QtWidgets.QMessageBox.Yes:
self.model.model_data = copy.deepcopy(self.__initial_model_data) self._model.model_data = copy.deepcopy(self.__initial_model_data)
self.model.valide_all_changes() self._model.valide_all_changes()
self.graph() self.graph()
self.ui.btn_reset.setEnabled(False) self.ui.btn_reset.setEnabled(False)
self.ui.btn_check.setEnabled(False) self.ui.btn_check.setEnabled(False)
@ -544,7 +534,7 @@ class View(QMainWindow):
) )
if buttonReply == QtWidgets.QMessageBox.Yes: if buttonReply == QtWidgets.QMessageBox.Yes:
self.model.remove_duplicates_names() self._model.remove_duplicates_names()
def ask_quit(self): def ask_quit(self):
choice = QtWidgets.QMessageBox.question( choice = QtWidgets.QMessageBox.question(

View File

@ -199,18 +199,6 @@ class Ui_MainWindow(object):
self.verticalLayout_left.addLayout(self.horizontalLayout) self.verticalLayout_left.addLayout(self.horizontalLayout)
self.tableView = QTableView(self.widget) self.tableView = QTableView(self.widget)
self.tableView.setStyleSheet(
" QTableView { border: 1px solid black;\n"
" gridline-color: blue;\n"
" border-radius: 2px;\n"
" border-style: solid;\n"
" background-color: #EEF6FC; \n"
" selection-background-color: #218ede;\n"
" font-size: 11.5px;\n"
" font-family: Helvetica\n"
"\n"
" }"
)
self.tableView.setObjectName("tableView") self.tableView.setObjectName("tableView")
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
@ -230,41 +218,18 @@ class Ui_MainWindow(object):
self.label_graphic_help = QtWidgets.QLabel(self.widget1) self.label_graphic_help = QtWidgets.QLabel(self.widget1)
self.label_graphic_help.setMaximumSize(QtCore.QSize(16777215, 25)) self.label_graphic_help.setMaximumSize(QtCore.QSize(16777215, 25))
self.label_graphic_help.setBaseSize(QtCore.QSize(0, 30)) self.label_graphic_help.setBaseSize(QtCore.QSize(0, 30))
self.label_graphic_help.setStyleSheet(
"QLabel { border: 1px solid blue;\n"
" gridline-color: blue;\n"
" border-radius: 3px;\n"
" border-style: solid;\n"
" background-color: #EEF6FC; \n"
" selection-background-color: black;\n"
" font-size: 11px;\n"
" font-family: Helvetica\n"
"}"
)
self.label_graphic_help.setObjectName("label_graphic_help") self.label_graphic_help.setObjectName("label_graphic_help")
self.verticalLayout_right.addWidget(self.label_graphic_help) self.verticalLayout_right.addWidget(self.label_graphic_help)
self.my_canvas = MplCanvas.MplCanvas(width=5, height=4, dpi=100) self.canvas = MplCanvas.MplCanvas(width=5, height=4, dpi=100)
self.my_canvas.setObjectName("my_canvas") self.canvas.setObjectName("canvas")
self.my_toolbar = navigation_toolbar_2qt.PamHyrNavigationToolbar2QT( self.my_toolbar = navigation_toolbar_2qt.PamHyrNavigationToolbar2QT(
self.my_canvas, self.widget1 self.canvas, self.widget1
)
self.my_toolbar.setStyleSheet(
"QToolBar{ border: 1px solid darkGray;\n"
" gridline-color: blue;\n"
" border-radius: 4px;\n"
" border-style: solid;\n"
" background-color: #EEF6FC; \n"
" selection-background-color: #218ede;\n"
" font-size: 12px;\n"
" font-family: Helvetica\n"
"\n"
" }"
) )
self.verticalLayout_right.addWidget(self.my_toolbar) self.verticalLayout_right.addWidget(self.my_toolbar)
self.verticalLayout_right.addWidget(self.my_canvas) self.verticalLayout_right.addWidget(self.canvas)
self.horizontalLayout_2.addWidget(self.splitter) self.horizontalLayout_2.addWidget(self.splitter)
MainWindowProfile.setCentralWidget(self.centralwidget) MainWindowProfile.setCentralWidget(self.centralwidget)