-
Notifications
You must be signed in to change notification settings - Fork 225
Commit
Add global search
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/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] |