37 from classes
import updates
38 from classes
import info
39 from classes.query
import File
40 from classes.logger
import log
41 from classes.app
import get_app
42 from classes.thumbnail
import GenerateThumbnail
47 import simplejson
as json
51 ModelRefreshed = pyqtSignal()
54 QStandardItemModel.__init__(self)
63 selected_row = self.itemFromIndex(item).row()
64 files.append(self.item(selected_row, 5).text())
65 data.setText(json.dumps(files))
77 if len(action.key) >= 1
and action.key[0].lower() ==
"files":
79 if action.type ==
"insert":
87 log.info(
"updating files model.")
104 self.model.setHorizontalHeaderLabels([
"", _(
"Name"), _(
"Tags"),
"",
"",
""])
107 files = File.filter()
111 path, filename = os.path.split(file.data[
"path"])
113 if "tags" in file.data.keys():
114 tags = file.data[
"tags"]
116 if "name" in file.data.keys():
117 name = file.data[
"name"]
119 if not win.actionFilesShowAll.isChecked():
120 if win.actionFilesShowVideo.isChecked():
121 if not file.data[
"media_type"] ==
"video":
123 elif win.actionFilesShowAudio.isChecked():
124 if not file.data[
"media_type"] ==
"audio":
126 elif win.actionFilesShowImage.isChecked():
127 if not file.data[
"media_type"] ==
"image":
131 if win.filesFilter.text() !=
"":
132 if not win.filesFilter.text().lower()
in filename.lower() \
133 and not win.filesFilter.text().lower()
in tags.lower() \
134 and not win.filesFilter.text().lower()
in name.lower():
138 if (file.data[
"media_type"] ==
"video" or file.data[
"media_type"] ==
"image"):
140 thumb_path = os.path.join(info.THUMBNAIL_PATH,
"{}.png".format(file.id))
143 if not os.path.exists(thumb_path):
147 file_path = file.absolute_path()
151 if file.data[
"media_type"] ==
"video":
152 overlay_path = os.path.join(info.IMAGES_PATH,
"overlay.png")
156 if 'start' in file.data.keys():
157 fps = file.data[
"fps"]
158 fps_float = float(fps[
"num"]) / float(fps[
"den"])
159 thumbnail_frame = round(float(file.data[
'start']) * fps_float) + 1
162 GenerateThumbnail(file_path, thumb_path, thumbnail_frame, 98, 64, os.path.join(info.IMAGES_PATH,
"mask.png"), overlay_path)
167 msg.setText(_(
"{} is not a valid video, audio, or image file.".format(filename)))
173 thumb_path = os.path.join(info.PATH,
"images",
"AudioThumbnail.png")
178 col = QStandardItem()
179 col.setIcon(QIcon(thumb_path))
181 col.setToolTip(filename)
182 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
186 col = QStandardItem(
"Name")
187 col.setData(filename, Qt.DisplayRole)
189 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsEditable)
193 col = QStandardItem(
"Tags")
194 col.setData(tags, Qt.DisplayRole)
196 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsEditable)
200 col = QStandardItem(
"Type")
201 col.setData(file.data[
"media_type"], Qt.DisplayRole)
202 col.setText(file.data[
"media_type"])
203 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsEditable)
207 col = QStandardItem(
"Path")
208 col.setData(path, Qt.DisplayRole)
210 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled)
214 col = QStandardItem(
"ID")
215 col.setData(file.data[
"id"], Qt.DisplayRole)
216 col.setText(file.data[
"id"])
217 col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled)
221 if not file.data[
"id"]
in self.
model_ids:
222 self.model.appendRow(row)
223 self.
model_ids[file.data[
"id"]] = file.data[
"id"]
229 get_app().window.resize_contents()
232 self.model.ModelRefreshed.emit()
238 app.updates.add_listener(self)
242 self.model.setColumnCount(6)
def get_app
Returns the current QApplication instance of OpenShot.
def GenerateThumbnail
Create thumbnail image, and check for rotate metadata (if any)
Interface for classes that listen for changes (insert, update, and delete).