system de favorit

This commit is contained in:
2026-02-11 14:15:22 +01:00
parent 670c698b77
commit 1b54026a13
8 changed files with 487 additions and 227 deletions
+91 -4
View File
@@ -25,6 +25,7 @@ from qgis.PyQt.QtWidgets import (
# QMenu,
# QToolButton,
# QTableWidget,
QPushButton,
QTableWidgetItem,
QMessageBox,
QVBoxLayout,
@@ -101,6 +102,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger(0))
self.toolButton.setIcon(QtGui.QIcon(resources_path('ui', 'find.png')))
self.toolButton_2.setIcon(QtGui.QIcon(resources_path('ui', 'star.png')))
self.comboBox_2.addItem("SIG")
self.comboBox_2.addItem('REF')
@@ -113,6 +115,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.checkBox.hide()
# self.checkBox.stateChanged.connect(self.modeCarte)
self.toolButton.clicked.connect(self.getCanevas)
self.toolButton_2.clicked.connect(self.filtre_favorit)
layout = QVBoxLayout()
self.lineEdit.textChanged.connect(self.filtre_dynamique)
# self.viewer.textChanged.connect(self.NewTitle)
@@ -230,8 +233,41 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
def suppression_flux(self):
self.tableWidget_2.removeRow(self.tableWidget_2.currentRow())
def AddOrDelToUserFav(self):
selected_items = self.tableWidget.selectedItems()
favorit_statut = selected_items[4].text()
selected_items[4].tableWidget().removeCellWidget(selected_items[4].row(), 4)
schema_name = selected_items[2].text()
table_name = selected_items[3].text()
if favorit_statut == "0":
FAV = "mStarIconDel.png"
selected_items[4].setText("1")
SQLAddFav = """INSERT INTO admin_sig.favtable (utilisateur, schema_name, table_name) VALUES ('""" + user + "','" + schema_name + "','" + table_name + """');"""
if dbtype == sigdb:
cur.execute(SQLAddFav)
con.commit()
else:
FAV = "mStarIconAdd.png"
selected_items[4].setText("0")
SQLDelFav = """DELETE FROM admin_sig.favtable WHERE utilisateur LIKE '""" + user + """' AND schema_name LIKE '""" + schema_name + """' AND table_name LIKE '""" + table_name + """';"""
if dbtype == sigdb:
cur.execute(SQLDelFav)
con.commit()
iconFav = QIcon()
iconFav.addPixmap(QtGui.QPixmap(resources_path('icons', FAV)), QIcon.Mode(0), QIcon.State(1))
self.FavButton = QPushButton(iconFav, "")
selected_items[4].tableWidget().setCellWidget(selected_items[4].row(), 4, self.FavButton)
self.FavButton.clicked.connect(self.AddOrDelToUserFav)
def initialisation_flux(self):
self.tableWidget.clear()
if NoSignals == 0:
# self.tableWidget.clear()
# print('Initiaisation de la connection a la DB: ' + dbtype)
if dbtype == sigdb:
# self.toolButton.setEnabled(1)
@@ -288,8 +324,19 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
GrandUser = []
for grandsFind in list_grands:
GrandUser.append(grandsFind[0])
if dbtype == sigdb:
SQLFavTable = "SELECT concat(schema_name, '.', table_name) FROM admin_sig.favtable WHERE utilisateur LIKE '" + user + "';"
cur.execute(SQLFavTable)
list_fav = cur.fetchall()
FavList = []
for favFind in list_fav:
FavList.append(favFind[0])
else:
FavList = []
self.tableWidget.setRowCount(len(list_schema))
self.tableWidget.setColumnCount(4)
self.tableWidget.setColumnCount(5)
i = 0
for value in list_schema:
if dbtype == sigdb:
@@ -320,6 +367,20 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
schema_name = str(value[0])
table_name = str(value[1])
FavStatut = 0
if (schema_name + '.' + table_name) not in FavList:
FAV = "mStarIconAdd.png"
FavStatut = 0
else:
FAV = "mStarIconDel.png"
FavStatut = 1
iconFav = QIcon()
iconFav.addPixmap(QtGui.QPixmap(resources_path('icons', FAV)), QIcon.Mode(0), QIcon.State(1))
self.FavButton = QPushButton(iconFav, "")
self.FavButton.clicked.connect(self.AddOrDelToUserFav)
if dbtype == refdb:
self.FavButton.setEnabled(False)
if (str(value[0]) + '.' + str(value[1])) in RasterList:
SVG = 'mIconRaster.svg'
else:
@@ -337,6 +398,9 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.tableWidget.setItem(i, 2, item)
item = QTableWidgetItem(table_name)
self.tableWidget.setItem(i, 3, item)
item = QTableWidgetItem(str(FavStatut))
self.tableWidget.setItem(i, 4, item)
self.tableWidget.setCellWidget(i, 4, self.FavButton)
# if dbtype == sigdb:
if (str(value[0]) + '.' + str(value[1])) in GrandUser:
@@ -379,13 +443,17 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
item = QTableWidgetItem(Project[0])
self.tableWidget.setItem(i, 3, item)
item = QTableWidgetItem('FavIcon')
self.tableWidget.setItem(i, 4, item)
i = i + 1
self.tableWidget.setColumnWidth(0, 20)
self.tableWidget.setColumnWidth(1, 70)
self.tableWidget.setColumnWidth(2, 300)
self.tableWidget.setColumnWidth(3, 300)
self.tableWidget.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table"])
self.tableWidget.setColumnWidth(4, 20)
self.tableWidget.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table", "Favorit"])
if self.lineEdit.text() != 'Recherche par mots-clés':
self.filtre_dynamique(self.lineEdit.text())
@@ -403,14 +471,15 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
for column in range(self.tableWidget.columnCount()):
cloned_item = selected_items[column].clone()
self.tableWidget_2.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table"])
self.tableWidget_2.setColumnCount(4)
self.tableWidget_2.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table", "Favorit"])
self.tableWidget_2.setColumnCount(5)
self.tableWidget_2.setItem(selected_row, column, cloned_item)
self.tableWidget_2.setColumnWidth(0, 20)
self.tableWidget_2.setColumnWidth(1, 70)
self.tableWidget_2.setColumnWidth(2, 300)
self.tableWidget_2.setColumnWidth(3, 300)
self.tableWidget_2.setColumnWidth(4, 20)
def item_already_exists(self, new_item_text):
# Assuming you want to compare items in the first column for uniqueness
@@ -588,6 +657,18 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.comboBox.addItem(baxval[0])
NoSignals = 0
def filtre_favorit(self, filter_fav):
if self.toolButton_2.text() == "0":
self.toolButton_2.setText("1")
for i in range(self.tableWidget.rowCount()):
item = self.tableWidget.item(i, 4)
match = self.toolButton_2.text() not in item.text().lower()
self.tableWidget.setRowHidden(i, match)
elif self.toolButton_2.text() == "1":
self.toolButton_2.setText("0")
for i in range(self.tableWidget.rowCount()):
self.tableWidget.setRowHidden(i, False)
def filtre_dynamique(self, filter_text):
if filter_text.find(' ') >= 0:
filter_text = filter_text.replace(" ", "_")
@@ -595,6 +676,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
for j in range(self.tableWidget.columnCount()):
item = self.tableWidget.item(i, j)
match = filter_text.lower() not in item.text().lower()
if match is False:
if self.toolButton_2.text() == "1":
item = self.tableWidget.item(i, 4)
match = self.toolButton_2.text() not in item.text().lower()
self.tableWidget.setRowHidden(i, match)
if not match:
break
@@ -637,6 +722,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
DepName = QTableWidgetItem('form')
SchemaName = QTableWidgetItem(e[0][6:])
TableName = QTableWidgetItem(e[1][len(e[0]) + 1:])
FavoritStatut = QTableWidgetItem('FavIcon')
self.tableWidget.insertRow(row_count)
itemIcon = QTableWidgetItem()
@@ -648,6 +734,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.tableWidget.setItem(row_count, 1, DepName)
self.tableWidget.setItem(row_count, 2, SchemaName)
self.tableWidget.setItem(row_count, 3, TableName)
self.tableWidget.setItem(row_count, 3, FavoritStatut)
if TableSomme == 0:
for j in range(self.tableWidget.columnCount()):
self.tableWidget.item(row_count, j).setBackground(QtGui.QColor(246, 185, 73, 50))