manuskript/manuskript/models/flatDataModelWrapper.py
2021-04-02 14:15:17 +01:00

53 lines
1.7 KiB
Python

#!/usr/bin/env python
# --!-- coding: utf8 --!--
from manuskript.enums import FlatData, Model
from manuskript.searchLabels import FlatDataSearchLabels
from manuskript.models.searchableModel import searchableModel
from manuskript.models.searchableItem import searchableItem
"""
All searches are performed on models inheriting from searchableModel, but special metadata such as book summaries
are stored directly on a GUI element (QStandardItemModel). We wrap this GUI element inside this wrapper class
so it exposes the same interface for searches.
"""
class flatDataModelWrapper(searchableModel, searchableItem):
def __init__(self, qstandardItemModel):
self.qstandardItemModel = qstandardItemModel
def searchableItems(self):
return [flatDataItemWrapper(self.qstandardItemModel)]
class flatDataItemWrapper(searchableItem):
def __init__(self, qstandardItemModel):
super().__init__(FlatDataSearchLabels)
self.qstandardItemModel = qstandardItemModel
def searchModel(self):
return Model.FlatData
def searchID(self):
return None
def searchTitle(self, column):
return self.translate(self.searchColumnLabel(column))
def searchPath(self, column):
return [self.translate("Summary"), self.translate(self.searchColumnLabel(column))]
def searchData(self, column):
return self.qstandardItemModel.item(1, self.searchDataIndex(column)).text()
@staticmethod
def searchDataIndex(column):
columnIndices = {
FlatData.summarySituation: 0,
FlatData.summarySentence: 1,
FlatData.summaryPara: 2,
FlatData.summaryPage: 3,
FlatData.summaryFull: 4
}
return columnIndices[column]