Skip to content

Commit a417cac

Browse files
authored
Merge pull request #3604 from OpenShot/new-webengine-support
Initial support for QtWebEngine and Async callbacks for timeline/Qt Integration
2 parents 65e26c6 + 5ba0f00 commit a417cac

File tree

412 files changed

+49355
-47889
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

412 files changed

+49355
-47889
lines changed

.gitlab-ci.yml

+9-9
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ linux-builder:
2222
- git log $(git describe --tags --abbrev=0 @^)..@ --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log"
2323
- cd doc; make html SPHINXOPTS="-D html_theme_options.analytics_id=UA-4381101-5"; cd ..;
2424
- ~/auto-update-sphinx "$CI_PROJECT_DIR/build" "$CI_COMMIT_REF_NAME"
25-
- python3 freeze.py build
25+
- python3 -u freeze.py build
2626
- /bin/sh ./installer/mangle-hw-libs.sh "build/exe.linux-x86_64-3.4/"
27-
- python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
27+
- python3 -u installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
2828
when: always
2929
except:
3030
- tags
3131
tags:
32-
- linux
32+
- linux-bionic
3333

3434
mac-builder:
3535
stage: build-openshot-qt
@@ -63,8 +63,8 @@ mac-builder:
6363
- export DYLD_LIBRARY_PATH=$CI_PROJECT_DIR/build/install-x64/lib:DYLD_LIBRARY_PATH
6464
- echo -e "CI_PROJECT_NAME:$CI_PROJECT_NAME\nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME\nCI_COMMIT_SHA:$CI_COMMIT_SHA\nCI_JOB_ID:$CI_JOB_ID" > "build/install-x64/share/$CI_PROJECT_NAME"
6565
- git log $(git describe --tags --abbrev=0 @^)..@ --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log"
66-
- /Library/Frameworks/Python.Framework/Versions/3.6/bin/python3.6 freeze.py bdist_mac --iconfile=installer/openshot.icns --custom-info-plist=installer/Info.plist --bundle-name="OpenShot Video Editor"
67-
- /Library/Frameworks/Python.Framework/Versions/3.6/bin/python3.6 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
66+
- /Library/Frameworks/Python.Framework/Versions/3.6/bin/python3.6 -u freeze.py bdist_mac --iconfile=installer/openshot.icns --custom-info-plist=installer/Info.plist --bundle-name="OpenShot Video Editor"
67+
- /Library/Frameworks/Python.Framework/Versions/3.6/bin/python3.6 -u installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
6868
when: always
6969
except:
7070
- tags
@@ -90,8 +90,8 @@ windows-builder-x64:
9090
- New-Item -path "build/install-x64/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force
9191
- $PREV_GIT_LABEL=(git describe --tags --abbrev=0 '@^')
9292
- git log "$PREV_GIT_LABEL..@" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log"
93-
- python3 freeze.py build
94-
- python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
93+
- python3 -u freeze.py build
94+
- python3 -u installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME"
9595
when: always
9696
except:
9797
- tags
@@ -117,9 +117,9 @@ windows-builder-x86:
117117
- New-Item -path "build/install-x86/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force
118118
- $PREV_GIT_LABEL=(git describe --tags --abbrev=0 '@^')
119119
- git log "$PREV_GIT_LABEL..@" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x86/share/$CI_PROJECT_NAME.log"
120-
- python3 freeze.py build
120+
- python3 -u freeze.py build
121121
- editbin /LARGEADDRESSAWARE "$CI_PROJECT_DIR\build\exe.mingw-3.7\openshot-qt.exe"
122-
- python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "True" "$CI_COMMIT_REF_NAME"
122+
- python3 -u installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "True" "$CI_COMMIT_REF_NAME"
123123
when: always
124124
except:
125125
- tags

.travis.yml

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ addons:
1818
- python3-pyqt5.qtmultimedia
1919
- python3-pyqt5.qtopengl
2020
- python3-pyqt5.qtsvg
21-
- python3-pyqt5.qtwebkit
21+
- python3-pyqt5.qtwebengine
2222
- python3-requests
2323
- python3-xdg
2424
- python3-zmq
2525
- qttranslations5-l10n
2626
- xvfb
2727

28-
matrix:
28+
jobs:
29+
allow_failures:
30+
- name: "Python 3.5 (Ubuntu 16.04 Xenial)"
31+
2932
include:
3033
- name: "Python 3.5 (Ubuntu 16.04 Xenial)"
3134
os: linux

freeze.py

+49-23
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
"openshot",
7777
"time",
7878
"uuid",
79+
"idna",
7980
"shutil",
8081
"threading",
8182
"subprocess",
@@ -90,6 +91,9 @@
9091
"json"
9192
]
9293

94+
# Modules to include
95+
python_modules = ["idna.idnadata"]
96+
9397
# Determine absolute PATH of OpenShot folder
9498
PATH = os.path.dirname(os.path.realpath(__file__)) # Primary openshot folder
9599

@@ -210,6 +214,27 @@ def find_files(directory, patterns):
210214
if os.path.exists(resvg_path):
211215
external_so_files.append((resvg_path, os.path.basename(resvg_path)))
212216

217+
# Add QtWebEngineProcess (if found)
218+
web_process_path = ARCHLIB + "qt5/libexec/QtWebEngineProcess"
219+
external_so_files.append((web_process_path, os.path.basename(web_process_path)))
220+
221+
# Add QtWebEngineProcess Resources & Local
222+
qt5_path = "/usr/share/qt5/"
223+
for filename in find_files(os.path.join(qt5_path, "resources"), ["*"]):
224+
external_so_files.append((filename, os.path.relpath(filename, start=qt5_path)))
225+
for filename in find_files(os.path.join(qt5_path, "translations", "qtwebengine_locales"), ["*"]):
226+
external_so_files.append((filename, os.path.relpath(filename, start=qt5_path)))
227+
228+
# Add Qt xcbglintegrations plugin
229+
xcbgl_path = ARCHLIB + "qt5/"
230+
for filename in find_files(os.path.join(xcbgl_path, "plugins", "xcbglintegrations"), ["*"]):
231+
external_so_files.append((filename, os.path.relpath(filename, start=xcbgl_path)))
232+
233+
# Add libsoftokn3
234+
nss_path = ARCHLIB + "nss/"
235+
for filename in find_files(nss_path, ["*"]):
236+
external_so_files.append((filename, os.path.basename(filename)))
237+
213238
# Append Linux ICON file
214239
iconFile += ".svg"
215240
src_files.append((os.path.join(PATH, "xdg", iconFile), iconFile))
@@ -223,7 +248,7 @@ def find_files(directory, patterns):
223248
# Get a list of all openshot.so dependencies (scan these libraries for their dependencies)
224249
pyqt5_mod_files = []
225250
from importlib import import_module
226-
for submod in ['Qt', 'QtWebKit', 'QtSvg', 'QtWebKitWidgets', 'QtWidgets', 'QtCore', 'QtGui', 'QtDBus']:
251+
for submod in ['Qt', 'QtWebEngine', 'QtWebEngineWidgets', 'QtSvg', 'QtWidgets', 'QtCore', 'QtGui', 'QtDBus']:
227252
mod_name = "PyQt5.{}".format(submod)
228253
mod = import_module(mod_name)
229254
pyqt5_mod_files.append(inspect.getfile(mod))
@@ -281,33 +306,14 @@ def find_files(directory, patterns):
281306
"libpangocairo-1.0.so.0",
282307
"libpangoft2-1.0.so.0",
283308
"libharfbuzz.so.0",
284-
"libthai.so.0",
285-
]
286-
and not libpath_file.startswith("libxcb-")
287-
) \
288-
or libpath_file in ["libgcrypt.so.11", "libQt5DBus.so.5", "libpng12.so.0", "libbz2.so.1.0", "libqxcb.so"]:
289-
309+
"libthai.so.0" ]
310+
) or libpath_file in ["libgcrypt.so.11", "libQt5DBus.so.5", "libpng12.so.0",
311+
"libbz2.so.1.0", "libqxcb.so", "libxcb-xinerama.so.0", "libpcre.so.3"]:
290312
# Ignore missing files
291313
if os.path.exists(libpath):
292314
filepath, filename = os.path.split(libpath)
293315
external_so_files.append((libpath, filename))
294316

295-
# Manually add missing files (that were missed in the above step). These files are required
296-
# for certain distros (like Fedora, openSUSE, Debian, etc...)
297-
# Also add Glib related files (required for some distros)
298-
299-
for added_lib in [ARCHLIB + "libssl.so",
300-
ARCHLIB + "libcrypto.so",
301-
ARCHLIB + "libglib-2.0.so",
302-
ARCHLIB + "libgio-2.0.so",
303-
ARCHLIB + "libgmodule-2.0.so",
304-
ARCHLIB + "libthread-2.0.so"
305-
]:
306-
if os.path.exists(added_lib):
307-
external_so_files.append((added_lib, os.path.basename(added_lib)))
308-
else:
309-
log.warning("{}: not found, skipping".format(added_lib))
310-
311317
elif sys.platform == "darwin":
312318
# Copy Mac specific files that cx_Freeze misses
313319
# JPEG library
@@ -327,6 +333,25 @@ def find_files(directory, patterns):
327333
iconFile += ".hqx"
328334
src_files.append((os.path.join(PATH, "xdg", iconFile), iconFile))
329335

336+
# Add QtWebEngineProcess (if found)
337+
qt_install_path = "/usr/local/qt5.15.X/qt5.15/5.15.0/clang_64/"
338+
qt_webengine_path = os.path.join(qt_install_path, "lib", "QtWebEngineCore.framework", "Versions", "5")
339+
web_process_path = os.path.join(qt_webengine_path, "Helpers", "QtWebEngineProcess.app", "Contents", "MacOS", "QtWebEngineProcess")
340+
web_core_path = os.path.join(qt_webengine_path, "QtWebEngineCore")
341+
external_so_files.append((web_process_path, os.path.basename(web_process_path)))
342+
external_so_files.append((web_core_path, os.path.basename(web_core_path)))
343+
344+
# Add QtWebEngineProcess Resources & Local
345+
for filename in find_files(os.path.join(qt_webengine_path, "Resources"), ["*"]):
346+
external_so_files.append((filename, os.path.relpath(filename, start=os.path.join(qt_webengine_path, "Resources"))))
347+
for filename in find_files(os.path.join(qt_webengine_path, "Resources", "qtwebengine_locales"), ["*"]):
348+
external_so_files.append((filename, os.path.relpath(filename, start=os.path.join(qt_webengine_path, "Resources"))))
349+
for filename in find_files(os.path.join(qt_install_path, "plugins"), ["*"]):
350+
relative_filepath = os.path.relpath(filename, start=os.path.join(qt_install_path, "plugins"))
351+
plugin_name = os.path.dirname(relative_filepath)
352+
if plugin_name not in ["sqldrivers", "playlistformats", "gamepads", "bearer"]:
353+
external_so_files.append((filename, relative_filepath))
354+
330355
# Append all source files
331356
src_files.append((os.path.join(PATH, "installer", "qt.conf"), "qt.conf"))
332357
for filename in find_files("openshot_qt", ["*"]):
@@ -335,6 +360,7 @@ def find_files(directory, patterns):
335360
# Dependencies are automatically detected, but it might need fine tuning.
336361
build_exe_options["packages"] = python_packages
337362
build_exe_options["include_files"] = src_files + external_so_files
363+
build_exe_options["includes"] = python_modules
338364

339365
# Set options
340366
build_options["build_exe"] = build_exe_options

images/AboutLogo.png

24.6 KB
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)