mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
114 lines
2.9 KiB
Python
114 lines
2.9 KiB
Python
# PamhyrTree.py -- Pamhyr abstract table model
|
|
# Copyright (C) 2023-2026 INRAE
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
import traceback
|
|
|
|
from tools import trace, timer
|
|
|
|
from Model.Except import NotImplementedMethodeError
|
|
|
|
from PyQt5.QtCore import (
|
|
Qt, QVariant, QAbstractItemModel,
|
|
QCoreApplication, QModelIndex, pyqtSlot,
|
|
)
|
|
|
|
from PyQt5.QtWidgets import (
|
|
QTreeWidget, QTreeWidgetItem,
|
|
)
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
class PamhyrModelItem(QTreeWidgetItem):
|
|
def __init__(self, data=None, trad=None, parent=None):
|
|
self._data = data
|
|
self._name = self._get_name()
|
|
|
|
super(PamhyrModelItem, self).__init__(
|
|
parent, [self._name],
|
|
)
|
|
|
|
self._setup_children()
|
|
|
|
def _get_name(self):
|
|
return str(self._data)
|
|
|
|
def _setup_children(self):
|
|
return
|
|
|
|
def get_value(self):
|
|
return self._data
|
|
|
|
def find_item_by_value(self, data):
|
|
if self.get_value() == data:
|
|
return self
|
|
|
|
for i in range(self.childCount()):
|
|
item = self.child(i)
|
|
if item.get_value() == data:
|
|
return item
|
|
|
|
found = item.find_item_by_value(data)
|
|
if found:
|
|
return found
|
|
|
|
return None
|
|
|
|
|
|
class PamhyrModelListItem(QTreeWidgetItem):
|
|
def __init__(self, name=None, lst=None,
|
|
child_item_ctor=PamhyrModelItem,
|
|
trad=None, parent=None):
|
|
super(PamhyrModelListItem, self).__init__(
|
|
parent, [name],
|
|
)
|
|
|
|
self._name = name
|
|
self._lst = lst
|
|
self._trad = trad
|
|
self._child_item_ctor = child_item_ctor
|
|
|
|
self._setup_children()
|
|
|
|
def _setup_children(self):
|
|
for el in self._lst.lst:
|
|
self.addChild(
|
|
self._child_item_ctor(
|
|
data=el, trad=self._trad, parent=self
|
|
)
|
|
)
|
|
|
|
def get_value(self):
|
|
return None
|
|
|
|
def find_item_by_value(self, data):
|
|
if self.get_value() == data:
|
|
return self
|
|
|
|
for i in range(self.childCount()):
|
|
item = self.child(i)
|
|
if item.get_value() == data:
|
|
return item
|
|
|
|
found = item.find_item_by_value(data)
|
|
if found:
|
|
return found
|
|
|
|
return None
|