Skip to content

Commit ef88182

Browse files
authored
Merge pull request #3497 from ferdnyc/emojis-mods2
Overhaul of models, views, data management
2 parents 30d1a2a + da09062 commit ef88182

20 files changed

+992
-930
lines changed

src/classes/app.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def __init__(self, *args, mode=None):
243243
else:
244244
# Apply the default settings and Auto import media file
245245
self.project.load("")
246-
self.window.filesTreeView.add_file(path)
246+
self.window.filesView.add_file(path)
247247
else:
248248
# Recover backup file (this can't happen until after the Main Window has completely loaded)
249249
self.window.RecoverBackup.emit()

src/classes/info.py

+3
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@
8585
# Blender minimum version required (a string value)
8686
BLENDER_MIN_VERSION = "2.80"
8787

88+
# Data-model debugging enabler
89+
MODEL_TEST = False
90+
8891
# Languages
8992
CMDLINE_LANGUAGE = None
9093
CURRENT_LANGUAGE = 'en_US'

src/launch.py

+18-9
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,21 @@ def main():
5959

6060
parser = argparse.ArgumentParser(description = 'OpenShot version ' + info.SETUP['version'])
6161
parser.add_argument('-l', '--lang', action='store',
62-
help='language code for interface (overrides '
63-
'preferences and system environment)')
62+
help='language code for interface (overrides '
63+
'preferences and system environment)')
6464
parser.add_argument('--list-languages', dest='list_languages',
65-
action='store_true', help='List all language '
66-
'codes supported by OpenShot')
67-
parser.add_argument('--path', dest='py_path',
68-
action='append',
69-
help='Additional locations to search for modules '
70-
'(PYTHONPATH). Can be used multiple times.')
65+
action='store_true',
66+
help='List all language codes supported by OpenShot')
67+
parser.add_argument('--path', dest='py_path', action='append',
68+
help='Additional locations to search for modules '
69+
'(PYTHONPATH). Can be used multiple times.')
70+
parser.add_argument('--test-models', dest='modeltest',
71+
action='store_true',
72+
help="Load Qt's QAbstractItemModelTester into data models "
73+
'(requires Qt 5.11+)')
7174
parser.add_argument('-V', '--version', action='store_true')
7275
parser.add_argument('remain', nargs=argparse.REMAINDER,
73-
help=argparse.SUPPRESS)
76+
help=argparse.SUPPRESS)
7477

7578
args = parser.parse_args()
7679

@@ -98,6 +101,12 @@ def main():
98101
print("Bad path {}: {}".format(p, ex))
99102
continue
100103

104+
if args.modeltest:
105+
info.MODEL_TEST = True
106+
# Set default logging rules, if the user didn't
107+
if os.getenv('QT_LOGGING_RULES') is None:
108+
os.putenv('QT_LOGGING_RULES', 'qt.modeltest.debug=true')
109+
101110
if args.lang:
102111
if args.lang in info.SUPPORTED_LANGUAGES:
103112
info.CMDLINE_LANGUAGE = args.lang

src/windows/animated_title.py

+10-52
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@
4040
from PyQt5.QtGui import QIcon, QStandardItemModel, QStandardItem
4141
from PyQt5.QtWidgets import *
4242
from PyQt5 import uic
43-
import openshot # Python module for libopenshot (required video editing module installed separately)
4443

4544
from classes import info, ui_util, settings, qt_types, updates
4645
from classes.app import get_app
4746
from classes.logger import log
48-
from classes.query import File
4947
from classes.metrics import *
5048
from windows.views.blender_listview import BlenderListView
5149

@@ -80,8 +78,8 @@ def __init__(self):
8078
self.buttonBox.addButton(self.btnCancel, QDialogButtonBox.RejectRole)
8179

8280
# Add blender treeview
83-
self.blenderTreeView = BlenderListView(self)
84-
self.verticalLayout.addWidget(self.blenderTreeView)
81+
self.blenderView = BlenderListView(self)
82+
self.verticalLayout.addWidget(self.blenderView)
8583

8684
# Init variables
8785
self.unique_folder_name = str(uuid.uuid1())
@@ -97,73 +95,33 @@ def accept(self):
9795
""" Start rendering animation, but don't close window """
9896

9997
# Render
100-
self.blenderTreeView.Render()
98+
self.blenderView.Render()
10199

102100
def close(self):
103101
""" Actually close window and accept dialog """
104102

105103
# Re-enable interface
106-
self.blenderTreeView.enable_interface()
104+
self.blenderView.enable_interface()
107105

108106
# Accept dialog
109-
super(AnimatedTitle, self).accept()
107+
super().accept()
110108

111109
def closeEvent(self, event):
112110

113111
# Stop threads
114-
self.blenderTreeView.background.quit()
112+
self.blenderView.background.quit()
115113

116114
# Re-enable interface
117-
self.blenderTreeView.enable_interface()
115+
self.blenderView.enable_interface()
118116

119117
def reject(self):
120118

121119
# Stop threads
122-
self.blenderTreeView.Cancel()
123-
self.blenderTreeView.background.quit()
120+
self.blenderView.Cancel()
121+
self.blenderView.background.quit()
124122

125123
# Cancel dialog
126-
super(AnimatedTitle, self).reject()
127-
128-
def add_file(self, filepath):
129-
""" Add an animation to the project file tree """
130-
filename = os.path.basename(filepath)
131-
132-
# Add file into project
133-
app = get_app()
134-
_ = get_app()._tr
135-
136-
# Check for this path in our existing project data
137-
file = File.get(path=filepath)
138-
139-
# If this file is already found, exit
140-
if file:
141-
return
142-
143-
# Get the JSON for the clip's internal reader
144-
try:
145-
# Open image sequence in FFmpegReader
146-
reader = openshot.FFmpegReader(filepath)
147-
reader.Open()
148-
149-
# Serialize JSON for the reader
150-
file_data = json.loads(reader.Json())
151-
152-
# Set media type
153-
file_data["media_type"] = "video"
154-
155-
# Save new file to the project data
156-
file = File()
157-
file.data = file_data
158-
file.save()
159-
return True
160-
161-
except:
162-
# Handle exception
163-
msg = QMessageBox()
164-
msg.setText(_("{} is not a valid video, audio, or image file.".format(filename)))
165-
msg.exec_()
166-
return False
124+
super().reject()
167125

168126
def clear_effect_controls(self):
169127
""" Clear all child widgets used for settings """

0 commit comments

Comments
 (0)