Merge pull request #1 from olive-editor/master

Sync request
This commit is contained in:
elsandosgrande
2019-02-13 16:08:19 +01:00
committed by GitHub
16 changed files with 631 additions and 459 deletions
+1 -1
View File
@@ -2,4 +2,4 @@
Makefile
.qmake.stash
effects/frei0r
ts/*.qm
+6
View File
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/cursors">
<file>left_side.png</file>
<file>right_side.png</file>
</qresource>
</RCC>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

+4
View File
@@ -4,6 +4,10 @@ export QT_SELECT := qt5
%:
dh $@
override_dh_auto_configure:
ls -a
dh_auto_configure
override_dh_auto_build:
lrelease olive.pro
dh_auto_build
+22 -7
View File
@@ -71,6 +71,9 @@ ProxyDialog::ProxyDialog(QWidget *parent, const QVector<Footage *> &footage) :
void ProxyDialog::accept() {
QVector<ProxyInfo> info_list;
// set to TRUE if any existing proxies exist and the user chooses to overwrite all of them
bool overwrite_all_existing = false;
for (int i=0;i<selected_footage.size();i++) {
// loop through selected footage and send info to the proxy queue
@@ -97,13 +100,25 @@ void ProxyDialog::accept() {
info.path = QDir(custom_location).filePath(base_footage_fn);
}
// if the proposed proxy file already exists
if (QFileInfo::exists(info.path) && QMessageBox::warning(this,
tr("Proxy file exists"),
tr("The file \"%1\" already exists. Do you wish to replace it?").arg(info.path),
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
// return to dialog without closing or starting any proxy generation
return;
// if the proposed proxy file already exists & user didn't select YesToAll box
if (QFileInfo::exists(info.path) && !overwrite_all_existing){
int rtn = QMessageBox::warning( this,
tr("Proxy file exists"),
tr("The file \"%1\" already exists. Do you wish to replace it?").arg(info.path),
QMessageBox::YesToAll | QMessageBox::Yes | QMessageBox::No);
switch (rtn){
case QMessageBox::Yes:
// continue as normal, proxy generator will automatically overwrite this file
break;
case QMessageBox::YesToAll:
// continue as normal, also set variable so that above messagebox is not shown again
overwrite_all_existing = true;
break;
case QMessageBox::No:
// return to dialog without closing or starting any proxy generation
return;
}
}
// send to proxy generator thread
+2
View File
@@ -87,8 +87,10 @@ int main(int argc, char *argv[]) {
QApplication a(argc, argv);
a.setWindowIcon(QIcon(":/icons/olive64.png"));
QCoreApplication::setOrganizationName("olivevideoeditor.org");
QCoreApplication::setOrganizationDomain("olivevideoeditor.org");
QCoreApplication::setApplicationName("Olive");
QGuiApplication::setDesktopFileName("org.olivevideoeditor.Olive");
MainWindow w(nullptr, appName);
w.updateTitle("");
+3
View File
@@ -15,6 +15,7 @@
#include "ui/viewerwidget.h"
#include "ui/sourceiconview.h"
#include "ui/timelineheader.h"
#include "ui/cursors.h"
#include "panels/panels.h"
#include "panels/project.h"
@@ -95,6 +96,8 @@ MainWindow::MainWindow(QWidget *parent, const QString &an) :
enable_launch_with_project(false),
appName(an)
{
init_custom_cursors();
open_debug_file();
debug_dialog = new DebugDialog(this);
+320 -321
View File
@@ -1,321 +1,320 @@
#-------------------------------------------------
#
# Project created by QtCreator 2018-05-11T10:31:59
#
#-------------------------------------------------
QT += core gui multimedia opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
mac {
TARGET = Olive
}
!mac {
TARGET = olive-editor
}
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# Tries to get the current Git short hash
system("which git") {
GITHASHVAR = $$system(git --git-dir $$PWD/.git --work-tree $$PWD log -1 --format=%h)
DEFINES += GITHASH=\\"\"$$GITHASHVAR\\"\"
}
CONFIG += c++11
CONFIG(debug, debug|release) {
CONFIG += console
}
SOURCES += \
main.cpp \
mainwindow.cpp \
panels/project.cpp \
panels/effectcontrols.cpp \
panels/viewer.cpp \
panels/timeline.cpp \
ui/sourcetable.cpp \
dialogs/aboutdialog.cpp \
ui/timelinewidget.cpp \
project/media.cpp \
project/footage.cpp \
project/sequence.cpp \
project/clip.cpp \
playback/playback.cpp \
playback/audio.cpp \
io/config.cpp \
dialogs/newsequencedialog.cpp \
ui/viewerwidget.cpp \
ui/viewercontainer.cpp \
dialogs/exportdialog.cpp \
ui/collapsiblewidget.cpp \
panels/panels.cpp \
playback/cacher.cpp \
io/exportthread.cpp \
ui/timelineheader.cpp \
io/previewgenerator.cpp \
ui/labelslider.cpp \
dialogs/preferencesdialog.cpp \
ui/audiomonitor.cpp \
project/undo.cpp \
ui/scrollarea.cpp \
ui/comboboxex.cpp \
ui/colorbutton.cpp \
dialogs/replaceclipmediadialog.cpp \
ui/fontcombobox.cpp \
ui/checkboxex.cpp \
ui/keyframeview.cpp \
ui/texteditex.cpp \
dialogs/demonotice.cpp \
project/marker.cpp \
dialogs/speeddialog.cpp \
dialogs/mediapropertiesdialog.cpp \
io/crc32.cpp \
project/projectmodel.cpp \
io/loadthread.cpp \
dialogs/loaddialog.cpp \
debug.cpp \
io/path.cpp \
effects/internal/linearfadetransition.cpp \
effects/internal/transformeffect.cpp \
effects/internal/solideffect.cpp \
effects/internal/texteffect.cpp \
effects/internal/timecodeeffect.cpp \
effects/internal/audionoiseeffect.cpp \
effects/internal/paneffect.cpp \
effects/internal/toneeffect.cpp \
effects/internal/volumeeffect.cpp \
effects/internal/crossdissolvetransition.cpp \
effects/internal/shakeeffect.cpp \
effects/internal/exponentialfadetransition.cpp \
effects/internal/logarithmicfadetransition.cpp \
effects/internal/cornerpineffect.cpp \
io/math.cpp \
io/qpainterwrapper.cpp \
project/effect.cpp \
project/transition.cpp \
project/effectrow.cpp \
project/effectfield.cpp \
effects/internal/cubetransition.cpp \
project/effectgizmo.cpp \
io/clipboard.cpp \
dialogs/stabilizerdialog.cpp \
io/avtogl.cpp \
ui/resizablescrollbar.cpp \
ui/sourceiconview.cpp \
project/sourcescommon.cpp \
ui/keyframenavigator.cpp \
panels/grapheditor.cpp \
ui/graphview.cpp \
ui/keyframedrawing.cpp \
ui/clickablelabel.cpp \
project/keyframe.cpp \
ui/rectangleselect.cpp \
dialogs/actionsearch.cpp \
ui/embeddedfilechooser.cpp \
effects/internal/fillleftrighteffect.cpp \
effects/internal/voideffect.cpp \
dialogs/texteditdialog.cpp \
dialogs/debugdialog.cpp \
ui/renderthread.cpp \
ui/renderfunctions.cpp \
ui/viewerwindow.cpp \
project/projectfilter.cpp \
effects/internal/frei0reffect.cpp \
project/effectloaders.cpp \
io/crossplatformlib.cpp \
effects/internal/vsthost.cpp \
ui/flowlayout.cpp \
dialogs/proxydialog.cpp \
io/proxygenerator.cpp \
dialogs/advancedvideodialog.cpp
HEADERS += \
mainwindow.h \
panels/project.h \
panels/effectcontrols.h \
panels/viewer.h \
panels/timeline.h \
ui/sourcetable.h \
dialogs/aboutdialog.h \
ui/timelinewidget.h \
project/media.h \
project/footage.h \
project/sequence.h \
project/clip.h \
playback/playback.h \
playback/audio.h \
io/config.h \
dialogs/newsequencedialog.h \
ui/viewerwidget.h \
ui/viewercontainer.h \
dialogs/exportdialog.h \
ui/collapsiblewidget.h \
panels/panels.h \
playback/cacher.h \
io/exportthread.h \
ui/timelinetools.h \
ui/timelineheader.h \
io/previewgenerator.h \
ui/labelslider.h \
dialogs/preferencesdialog.h \
ui/audiomonitor.h \
project/undo.h \
ui/scrollarea.h \
ui/comboboxex.h \
ui/colorbutton.h \
dialogs/replaceclipmediadialog.h \
ui/fontcombobox.h \
ui/checkboxex.h \
ui/keyframeview.h \
ui/texteditex.h \
dialogs/demonotice.h \
project/marker.h \
project/selection.h \
dialogs/speeddialog.h \
dialogs/mediapropertiesdialog.h \
io/crc32.h \
project/projectmodel.h \
io/loadthread.h \
dialogs/loaddialog.h \
debug.h \
io/path.h \
effects/internal/transformeffect.h \
effects/internal/solideffect.h \
effects/internal/texteffect.h \
effects/internal/timecodeeffect.h \
effects/internal/audionoiseeffect.h \
effects/internal/paneffect.h \
effects/internal/toneeffect.h \
effects/internal/volumeeffect.h \
effects/internal/shakeeffect.h \
effects/internal/linearfadetransition.h \
effects/internal/crossdissolvetransition.h \
effects/internal/exponentialfadetransition.h \
effects/internal/logarithmicfadetransition.h \
effects/internal/cornerpineffect.h \
io/math.h \
io/qpainterwrapper.h \
project/effect.h \
project/transition.h \
project/effectrow.h \
project/effectfield.h \
effects/internal/cubetransition.h \
project/effectgizmo.h \
io/clipboard.h \
dialogs/stabilizerdialog.h \
io/avtogl.h \
ui/resizablescrollbar.h \
ui/sourceiconview.h \
project/sourcescommon.h \
ui/keyframenavigator.h \
panels/grapheditor.h \
ui/graphview.h \
ui/keyframedrawing.h \
ui/clickablelabel.h \
project/keyframe.h \
ui/rectangleselect.h \
dialogs/actionsearch.h \
ui/embeddedfilechooser.h \
effects/internal/fillleftrighteffect.h \
effects/internal/voideffect.h \
dialogs/texteditdialog.h \
dialogs/debugdialog.h \
ui/renderthread.h \
ui/renderfunctions.h \
ui/viewerwindow.h \
project/projectfilter.h \
effects/internal/frei0reffect.h \
project/effectloaders.h \
io/crossplatformlib.h \
effects/internal/vsthost.h \
ui/flowlayout.h \
dialogs/proxydialog.h \
io/proxygenerator.h \
dialogs/advancedvideodialog.h
FORMS +=
TRANSLATIONS += \
ts/olive_de.ts \
ts/olive_es.ts \
ts/olive_fr.ts \
ts/olive_it.ts \
ts/olive_cs.ts \
ts/olive_ar.ts \
ts/olive_ru.ts \
ts/olive_bs.ts \
ts/olive_sr.ts
win32 {
RC_FILE = packaging/windows/resources.rc
LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lopengl32 -luser32
}
mac {
LIBS += -L/usr/local/lib -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -framework CoreFoundation
ICON = packaging/macos/olive.icns
INCLUDEPATH = /usr/local/include
}
unix:!mac {
CONFIG += link_pkgconfig
PKGCONFIG += libavutil libavformat libavcodec libavfilter libswscale libswresample
LIBS += -ldl
}
RESOURCES += \
icons/icons.qrc \
effects/internal/internalshaders.qrc
unix:!mac:isEmpty(PREFIX) {
PREFIX = /usr/local
}
unix:!mac:target.path = $$PREFIX/bin
effects.files = $$PWD/effects/*.frag $$PWD/effects/*.xml $$PWD/effects/*.vert
unix:!mac:effects.path = $$PREFIX/share/olive-editor/effects
translations.files = $$PWD/ts/*.qm
unix:!mac:translations.path = $$PREFIX/share/olive-editor/ts
unix:!mac {
metainfo.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.appdata.xml
metainfo.path = $$PREFIX/share/metainfo
desktop.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.desktop
desktop.path = $$PREFIX/share/applications
mime.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.xml
mime.path = $$PREFIX/share/mime/packages
icon16.files = $$PWD/packaging/linux/icons/16x16/org.olivevideoeditor.Olive.png
icon16.path = $$PREFIX/share/icons/hicolor/16x16/apps
icon32.files = $$PWD/packaging/linux/icons/32x32/org.olivevideoeditor.Olive.png
icon32.path = $$PREFIX/share/icons/hicolor/32x32/apps
icon48.files = $$PWD/packaging/linux/icons/48x48/org.olivevideoeditor.Olive.png
icon48.path = $$PREFIX/share/icons/hicolor/48x48/apps
icon64.files = $$PWD/packaging/linux/icons/64x64/org.olivevideoeditor.Olive.png
icon64.path = $$PREFIX/share/icons/hicolor/64x64/apps
icon128.files = $$PWD/packaging/linux/icons/128x128/org.olivevideoeditor.Olive.png
icon128.path = $$PREFIX/share/icons/hicolor/128x128/apps
icon256.files = $$PWD/packaging/linux/icons/256x256/org.olivevideoeditor.Olive.png
icon256.path = $$PREFIX/share/icons/hicolor/256x256/apps
icon512.files = $$PWD/packaging/linux/icons/512x512/org.olivevideoeditor.Olive.png
icon512.path = $$PREFIX/share/icons/hicolor/512x512/apps
icon1024.files = $$PWD/packaging/linux/icons/1024x1024/org.olivevideoeditor.Olive.png
icon1024.path = $$PREFIX/share/icons/hicolor/1024x1024/apps
INSTALLS += target effects translations metainfo desktop mime icon16 icon32 icon48 icon64 icon128 icon256 icon512 icon1024
}
#-------------------------------------------------
#
# Project created by QtCreator 2018-05-11T10:31:59
#
#-------------------------------------------------
QT += core gui multimedia opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
mac {
TARGET = Olive
}
!mac {
TARGET = olive-editor
}
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# Tries to get the current Git short hash
system("which git") {
GITHASHVAR = $$system(git --git-dir $$PWD/.git --work-tree $$PWD log -1 --format=%h)
DEFINES += GITHASH=\\"\"$$GITHASHVAR\\"\"
}
CONFIG += c++11
CONFIG(debug, debug|release) {
CONFIG += console
}
SOURCES += \
main.cpp \
mainwindow.cpp \
panels/project.cpp \
panels/effectcontrols.cpp \
panels/viewer.cpp \
panels/timeline.cpp \
ui/sourcetable.cpp \
dialogs/aboutdialog.cpp \
ui/timelinewidget.cpp \
project/media.cpp \
project/footage.cpp \
project/sequence.cpp \
project/clip.cpp \
playback/playback.cpp \
playback/audio.cpp \
io/config.cpp \
dialogs/newsequencedialog.cpp \
ui/viewerwidget.cpp \
ui/viewercontainer.cpp \
dialogs/exportdialog.cpp \
ui/collapsiblewidget.cpp \
panels/panels.cpp \
playback/cacher.cpp \
io/exportthread.cpp \
ui/timelineheader.cpp \
io/previewgenerator.cpp \
ui/labelslider.cpp \
dialogs/preferencesdialog.cpp \
ui/audiomonitor.cpp \
project/undo.cpp \
ui/scrollarea.cpp \
ui/comboboxex.cpp \
ui/colorbutton.cpp \
dialogs/replaceclipmediadialog.cpp \
ui/fontcombobox.cpp \
ui/checkboxex.cpp \
ui/keyframeview.cpp \
ui/texteditex.cpp \
dialogs/demonotice.cpp \
project/marker.cpp \
dialogs/speeddialog.cpp \
dialogs/mediapropertiesdialog.cpp \
io/crc32.cpp \
project/projectmodel.cpp \
io/loadthread.cpp \
dialogs/loaddialog.cpp \
debug.cpp \
io/path.cpp \
effects/internal/linearfadetransition.cpp \
effects/internal/transformeffect.cpp \
effects/internal/solideffect.cpp \
effects/internal/texteffect.cpp \
effects/internal/timecodeeffect.cpp \
effects/internal/audionoiseeffect.cpp \
effects/internal/paneffect.cpp \
effects/internal/toneeffect.cpp \
effects/internal/volumeeffect.cpp \
effects/internal/crossdissolvetransition.cpp \
effects/internal/shakeeffect.cpp \
effects/internal/exponentialfadetransition.cpp \
effects/internal/logarithmicfadetransition.cpp \
effects/internal/cornerpineffect.cpp \
io/math.cpp \
io/qpainterwrapper.cpp \
project/effect.cpp \
project/transition.cpp \
project/effectrow.cpp \
project/effectfield.cpp \
effects/internal/cubetransition.cpp \
project/effectgizmo.cpp \
io/clipboard.cpp \
dialogs/stabilizerdialog.cpp \
io/avtogl.cpp \
ui/resizablescrollbar.cpp \
ui/sourceiconview.cpp \
project/sourcescommon.cpp \
ui/keyframenavigator.cpp \
panels/grapheditor.cpp \
ui/graphview.cpp \
ui/keyframedrawing.cpp \
ui/clickablelabel.cpp \
project/keyframe.cpp \
ui/rectangleselect.cpp \
dialogs/actionsearch.cpp \
ui/embeddedfilechooser.cpp \
effects/internal/fillleftrighteffect.cpp \
effects/internal/voideffect.cpp \
dialogs/texteditdialog.cpp \
dialogs/debugdialog.cpp \
ui/renderthread.cpp \
ui/renderfunctions.cpp \
ui/viewerwindow.cpp \
project/projectfilter.cpp \
effects/internal/frei0reffect.cpp \
project/effectloaders.cpp \
io/crossplatformlib.cpp \
effects/internal/vsthost.cpp \
ui/flowlayout.cpp \
dialogs/proxydialog.cpp \
io/proxygenerator.cpp \
dialogs/advancedvideodialog.cpp \
ui/cursors.cpp
HEADERS += \
mainwindow.h \
panels/project.h \
panels/effectcontrols.h \
panels/viewer.h \
panels/timeline.h \
ui/sourcetable.h \
dialogs/aboutdialog.h \
ui/timelinewidget.h \
project/media.h \
project/footage.h \
project/sequence.h \
project/clip.h \
playback/playback.h \
playback/audio.h \
io/config.h \
dialogs/newsequencedialog.h \
ui/viewerwidget.h \
ui/viewercontainer.h \
dialogs/exportdialog.h \
ui/collapsiblewidget.h \
panels/panels.h \
playback/cacher.h \
io/exportthread.h \
ui/timelinetools.h \
ui/timelineheader.h \
io/previewgenerator.h \
ui/labelslider.h \
dialogs/preferencesdialog.h \
ui/audiomonitor.h \
project/undo.h \
ui/scrollarea.h \
ui/comboboxex.h \
ui/colorbutton.h \
dialogs/replaceclipmediadialog.h \
ui/fontcombobox.h \
ui/checkboxex.h \
ui/keyframeview.h \
ui/texteditex.h \
dialogs/demonotice.h \
project/marker.h \
project/selection.h \
dialogs/speeddialog.h \
dialogs/mediapropertiesdialog.h \
io/crc32.h \
project/projectmodel.h \
io/loadthread.h \
dialogs/loaddialog.h \
debug.h \
io/path.h \
effects/internal/transformeffect.h \
effects/internal/solideffect.h \
effects/internal/texteffect.h \
effects/internal/timecodeeffect.h \
effects/internal/audionoiseeffect.h \
effects/internal/paneffect.h \
effects/internal/toneeffect.h \
effects/internal/volumeeffect.h \
effects/internal/shakeeffect.h \
effects/internal/linearfadetransition.h \
effects/internal/crossdissolvetransition.h \
effects/internal/exponentialfadetransition.h \
effects/internal/logarithmicfadetransition.h \
effects/internal/cornerpineffect.h \
io/math.h \
io/qpainterwrapper.h \
project/effect.h \
project/transition.h \
project/effectrow.h \
project/effectfield.h \
effects/internal/cubetransition.h \
project/effectgizmo.h \
io/clipboard.h \
dialogs/stabilizerdialog.h \
io/avtogl.h \
ui/resizablescrollbar.h \
ui/sourceiconview.h \
project/sourcescommon.h \
ui/keyframenavigator.h \
panels/grapheditor.h \
ui/graphview.h \
ui/keyframedrawing.h \
ui/clickablelabel.h \
project/keyframe.h \
ui/rectangleselect.h \
dialogs/actionsearch.h \
ui/embeddedfilechooser.h \
effects/internal/fillleftrighteffect.h \
effects/internal/voideffect.h \
dialogs/texteditdialog.h \
dialogs/debugdialog.h \
ui/renderthread.h \
ui/renderfunctions.h \
ui/viewerwindow.h \
project/projectfilter.h \
effects/internal/frei0reffect.h \
project/effectloaders.h \
io/crossplatformlib.h \
effects/internal/vsthost.h \
ui/flowlayout.h \
dialogs/proxydialog.h \
io/proxygenerator.h \
dialogs/advancedvideodialog.h \
ui/cursors.h
FORMS +=
TRANSLATIONS += \
ts/olive_de.ts \
ts/olive_es.ts \
ts/olive_fr.ts \
ts/olive_it.ts \
ts/olive_cs.ts \
ts/olive_ar.ts \
ts/olive_ru.ts \
ts/olive_bs.ts \
ts/olive_sr.ts
win32 {
RC_FILE = packaging/windows/resources.rc
LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lopengl32 -luser32
}
mac {
LIBS += -L/usr/local/lib -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -framework CoreFoundation
ICON = packaging/macos/olive.icns
INCLUDEPATH = /usr/local/include
}
unix:!mac {
CONFIG += link_pkgconfig
PKGCONFIG += libavutil libavformat libavcodec libavfilter libswscale libswresample
LIBS += -ldl
}
RESOURCES += \
icons/icons.qrc \
effects/internal/internalshaders.qrc \
cursors/cursors.qrc
unix:!mac:isEmpty(PREFIX) {
PREFIX = /usr/local
}
unix:!mac:target.path = $$PREFIX/bin
effects.files = $$PWD/effects/*.frag $$PWD/effects/*.xml $$PWD/effects/*.vert
unix:!mac:effects.path = $$PREFIX/share/olive-editor/effects
translations.files = $$PWD/ts/*.qm
unix:!mac:translations.path = $$PREFIX/share/olive-editor/ts
unix:!mac {
metainfo.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.appdata.xml
metainfo.path = $$PREFIX/share/metainfo
desktop.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.desktop
desktop.path = $$PREFIX/share/applications
mime.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.xml
mime.path = $$PREFIX/share/mime/packages
icon16.files = $$PWD/packaging/linux/icons/16x16/org.olivevideoeditor.Olive.png
icon16.path = $$PREFIX/share/icons/hicolor/16x16/apps
icon32.files = $$PWD/packaging/linux/icons/32x32/org.olivevideoeditor.Olive.png
icon32.path = $$PREFIX/share/icons/hicolor/32x32/apps
icon48.files = $$PWD/packaging/linux/icons/48x48/org.olivevideoeditor.Olive.png
icon48.path = $$PREFIX/share/icons/hicolor/48x48/apps
icon64.files = $$PWD/packaging/linux/icons/64x64/org.olivevideoeditor.Olive.png
icon64.path = $$PREFIX/share/icons/hicolor/64x64/apps
icon128.files = $$PWD/packaging/linux/icons/128x128/org.olivevideoeditor.Olive.png
icon128.path = $$PREFIX/share/icons/hicolor/128x128/apps
icon256.files = $$PWD/packaging/linux/icons/256x256/org.olivevideoeditor.Olive.png
icon256.path = $$PREFIX/share/icons/hicolor/256x256/apps
icon512.files = $$PWD/packaging/linux/icons/512x512/org.olivevideoeditor.Olive.png
icon512.path = $$PREFIX/share/icons/hicolor/512x512/apps
INSTALLS += target effects translations metainfo desktop mime icon16 icon32 icon48 icon64 icon128 icon256 icon512
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

+17 -2
View File
@@ -817,20 +817,28 @@ bool Project::reveal_media(Media *media, QModelIndex parent) {
Media* m = project_model.getItem(item);
if (m->get_type() == MEDIA_TYPE_FOLDER) {
// if this item is a folder, recursively run this function to search it too
if (reveal_media(media, item)) return true;
} else if (m == media) {
// expand all folders leading to this media
// if m == media, then we found the media object we were looking for
// get sorter proxy item (the item that's "visible")
QModelIndex sorted_index = sorter->mapFromSource(item);
// retrieve its parent item
QModelIndex hierarchy = sorted_index.parent();
if (config.project_view_type == PROJECT_VIEW_TREE) {
// if we're in tree view, expand every folder in the hierarchy containing the media
while (hierarchy.isValid()) {
tree_view->setExpanded(hierarchy, true);
hierarchy = hierarchy.parent();
}
// select item
// select item (requires a QItemSelection object to select the whole row)
QItemSelection row_select(
sorter->index(sorted_index.row(), 0, sorted_index.parent()),
sorter->index(sorted_index.row(), sorter->columnCount()-1, sorted_index.parent())
@@ -838,9 +846,16 @@ bool Project::reveal_media(Media *media, QModelIndex parent) {
tree_view->selectionModel()->select(row_select, QItemSelectionModel::Select);
} else if (config.project_view_type == PROJECT_VIEW_ICON) {
// if we're in icon view, we just "browse" to the parent folder
icon_view->setRootIndex(hierarchy);
// select item in this folder
icon_view->selectionModel()->select(sorted_index, QItemSelectionModel::Select);
// update the "up" button state
set_up_dir_enabled();
}
return true;
+75 -76
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs_CZ">
<TS version="2.0" language="cs_CZ">
<context>
<name>AboutDialog</name>
<message>
@@ -27,12 +27,12 @@
<message>
<location filename="../dialogs/advancedvideodialog.cpp" line="21"/>
<source>Advanced Video Settings</source>
<translation type="unfinished"></translation>
<translation>Pokročilá nastavení obrazu</translation>
</message>
<message>
<location filename="../dialogs/advancedvideodialog.cpp" line="33"/>
<source>Pixel Format:</source>
<translation type="unfinished"></translation>
<translation>Formát pixelu:</translation>
</message>
</context>
<context>
@@ -196,54 +196,54 @@
<message>
<location filename="../project/effect.cpp" line="403"/>
<source>Load Settings From File</source>
<translation type="unfinished"></translation>
<translation>Nahrát nastavení ze souboru</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="405"/>
<source>Save Settings to File</source>
<translation type="unfinished"></translation>
<translation>Uložit nastavení do souboru</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="442"/>
<source>Save Effect Settings</source>
<translation type="unfinished"></translation>
<translation>Uložit nastavení efektu</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="444"/>
<location filename="../project/effect.cpp" line="474"/>
<source>Effect XML Settings %1</source>
<translation type="unfinished"></translation>
<translation>Nastavení XML efektu %1</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="462"/>
<source>Save Settings Failed</source>
<translation type="unfinished"></translation>
<translation>Nastavení se nepodařilo uložit</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="463"/>
<source>Failed to open &quot;%1&quot; for writing.</source>
<translation type="unfinished"></translation>
<translation>Nepodařilo se otevřít &quot;%1&quot; pro zápis.</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="472"/>
<source>Load Effect Settings</source>
<translation type="unfinished"></translation>
<translation>Nahrát nastavení efektu</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="488"/>
<location filename="../project/effect.cpp" line="697"/>
<source>Load Settings Failed</source>
<translation type="unfinished"></translation>
<translation>Nastavení se nepodařilo nahrát</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="489"/>
<source>Failed to open &quot;%1&quot; for reading.</source>
<translation type="unfinished"></translation>
<translation>Nepodařilo se otevřít &quot;%1&quot; pro čtení.</translation>
</message>
<message>
<location filename="../project/effect.cpp" line="698"/>
<source>This settings file doesn&apos;t match this effect.</source>
<translation type="unfinished"></translation>
<translation>Tento soubor s nastavením neodpovídá tomuto efektu.</translation>
</message>
</context>
<context>
@@ -325,7 +325,7 @@
<message>
<location filename="../dialogs/exportdialog.cpp" line="113"/>
<source>Unknown codec name %1</source>
<translation type="unfinished"></translation>
<translation>Neznámý název kodeku %1</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="319"/>
@@ -386,17 +386,17 @@
<location filename="../dialogs/exportdialog.cpp" line="576"/>
<location filename="../dialogs/exportdialog.cpp" line="582"/>
<source>Invalid Codec</source>
<translation type="unfinished"></translation>
<translation>Neplatný kodek</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="577"/>
<source>Failed to find a suitable encoder for this codec. Export will likely fail.</source>
<translation type="unfinished"></translation>
<translation>Nepodařilo se najít vhodný kodér pro tento kodek. Vyvedení pravděpodobně selže.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="583"/>
<source>Failed to find pixel format for this encoder. Export will likely fail.</source>
<translation type="unfinished"></translation>
<translation>Nepodařilo se najít formát pixelu pro tento kodér. Vyvedení pravděpodobně selže.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="596"/>
@@ -482,7 +482,7 @@
<message>
<location filename="../dialogs/exportdialog.cpp" line="679"/>
<source>Advanced</source>
<translation type="unfinished"></translation>
<translation>Pokročilé</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="695"/>
@@ -844,7 +844,7 @@
</message>
<message>
<source>Enable/Disable In/Out Point</source>
<translation type="vanished">Povolit/Zakázat bod začátku/konce</translation>
<translation>Povolit/Zakázat bod začátku/konce</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="279"/>
@@ -869,7 +869,7 @@
<message>
<location filename="../mainwindow.cpp" line="457"/>
<source>Please open the sequence you wish to export.</source>
<translation>Otevřete, prosím, sekvence, již chcete vyvést.</translation>
<translation>Otevřete, prosím, sekvenci, již chcete vyvést.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="555"/>
@@ -1214,29 +1214,29 @@
<message>
<location filename="../mainwindow.cpp" line="785"/>
<source>Shuttle Left</source>
<translation type="unfinished"></translation>
<translation>Jezdit tam a zpět vlevo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="786"/>
<source>Shuttle Stop</source>
<translation type="unfinished"></translation>
<translation>Zastavit pendlování</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="787"/>
<source>Shuttle Right</source>
<translation type="unfinished"></translation>
<translation>Jezdit tam a zpět vpravo</translation>
</message>
<message>
<source>Decrease Speed</source>
<translation type="vanished">Snížit rychlost</translation>
<translation>Snížit rychlost</translation>
</message>
<message>
<source>Pause</source>
<translation type="vanished">Pozastavit</translation>
<translation>Pozastavit</translation>
</message>
<message>
<source>Increase Speed</source>
<translation type="vanished">Zvýšit rychlost</translation>
<translation>Zvýšit rychlost</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="790"/>
@@ -1281,8 +1281,7 @@
<message>
<location filename="../mainwindow.cpp" line="832"/>
<source>Maximize Panel</source>
<translatorcomment>Zvětšit panel</translatorcomment>
<translation></translation>
<translation>Zvětšit panel</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="836"/>
@@ -1500,17 +1499,17 @@
<message>
<location filename="../project/marker.cpp" line="43"/>
<source>Set Marker</source>
<translation type="unfinished">Nastavit značku</translation>
<translation>Nastavit značku</translation>
</message>
<message>
<location filename="../project/marker.cpp" line="45"/>
<source>Set clip marker name:</source>
<translation type="unfinished"></translation>
<translation>Nastavit název značky záběru:</translation>
</message>
<message>
<location filename="../project/marker.cpp" line="46"/>
<source>Set sequence marker name:</source>
<translation type="unfinished"></translation>
<translation>Nastavit název značky sekvence:</translation>
</message>
</context>
<context>
@@ -1542,12 +1541,12 @@
</message>
<message>
<source>%1 fields (%2 frames)</source>
<translation type="vanished">%1 polí (%2 snímků)</translation>
<translation>%1 polí (%2 snímků)</translation>
</message>
<message>
<location filename="../project/media.cpp" line="122"/>
<source>%1 field(s) (%2 frame(s))</source>
<translation type="unfinished"></translation>
<translation>%1 pole(í) (%2 snímek(y))</translation>
</message>
<message>
<location filename="../project/media.cpp" line="131"/>
@@ -1612,20 +1611,20 @@ Rozložení zvuku: %6</translation>
</message>
<message>
<source>Audio %1: %2Hz %3 channels</source>
<translation type="vanished">Zvuk %1: %2Hz %3 kanálů</translation>
<translation>Zvuk %1: %2Hz %3 kanálů</translation>
</message>
<message>
<location filename="../dialogs/mediapropertiesdialog.cpp" line="56"/>
<source>Audio %1: %2Hz %3</source>
<translation type="unfinished"></translation>
<translation>Zvuk %1: %2Hz %3</translation>
</message>
<message numerus="yes">
<location filename="../dialogs/mediapropertiesdialog.cpp" line="59"/>
<source>%n channel(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
<translation>
<numerusform>%n kanál</numerusform>
<numerusform>%n kanály</numerusform>
<numerusform>%n kanálů</numerusform>
</translation>
</message>
<message>
@@ -1795,7 +1794,7 @@ Rozložení zvuku: %6</translation>
<message>
<location filename="../playback/playback.cpp" line="302"/>
<source>Generating Proxy: %1%</source>
<translation type="unfinished"></translation>
<translation>Vytvoření proxy: %1%</translation>
</message>
</context>
<context>
@@ -1879,22 +1878,22 @@ Rozložení zvuku: %6</translation>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="373"/>
<source>Delete All Previews</source>
<translation type="unfinished"></translation>
<translation>Smazat všechny náhledy</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="374"/>
<source>Are you sure you want to delete all previews?</source>
<translation type="unfinished"></translation>
<translation>Opravdu chcete smazat všechny náhledy?</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="378"/>
<source>Previews Deleted</source>
<translation type="unfinished"></translation>
<translation>Náhledy smazány</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="379"/>
<source>All previews deleted succesfully. You may have to re-open your current project for changes to take effect.</source>
<translation type="unfinished"></translation>
<translation>Všechny náhledy byly úspěšně smazány. Možná budete muset nynější projekt otevřít znovu, aby se změny projevily.</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="396"/>
@@ -1949,7 +1948,7 @@ Rozložení zvuku: %6</translation>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="491"/>
<source>Delete Previews</source>
<translation type="unfinished"></translation>
<translation>Smazat náhledy</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="499"/>
@@ -1968,7 +1967,7 @@ Rozložení zvuku: %6</translation>
</message>
<message>
<source>Disable Multithreading on Images</source>
<translation type="vanished">Zakázat vytvoření více vláken v jednom procesu na obrázky</translation>
<translation>Zakázat vytvoření více vláken v jednom procesu na obrázky</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="515"/>
@@ -2250,19 +2249,19 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
</message>
<message>
<source>ProRes SQ</source>
<translation type="vanished">ProRes SQ</translation>
<translation>ProRes SQ</translation>
</message>
<message>
<source>ProRes LT</source>
<translation type="vanished">ProRes LT</translation>
<translation>ProRes LT</translation>
</message>
<message>
<source>DNxHD</source>
<translation type="vanished">DNxHD</translation>
<translation>DNxHD</translation>
</message>
<message>
<source>H.264</source>
<translation type="vanished">H.264</translation>
<translation>H.264</translation>
</message>
<message>
<location filename="../dialogs/proxydialog.cpp" line="52"/>
@@ -2277,12 +2276,12 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../dialogs/proxydialog.cpp" line="102"/>
<source>Proxy file exists</source>
<translation type="unfinished"></translation>
<translation>Soubor proxy existuje</translation>
</message>
<message>
<location filename="../dialogs/proxydialog.cpp" line="103"/>
<source>The file &quot;%1&quot; already exists. Do you wish to replace it?</source>
<translation type="unfinished"></translation>
<translation>Soubor &quot;%1&quot; již existuje. Chcete jej nahradit?</translation>
</message>
<message>
<location filename="../dialogs/proxydialog.cpp" line="137"/>
@@ -2295,7 +2294,7 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../io/proxygenerator.cpp" line="303"/>
<source>Finished generating proxy for &quot;%1&quot;</source>
<translation type="unfinished"></translation>
<translation>Dokončeno vytvoření proxy pro &quot;%1&quot;</translation>
</message>
</context>
<context>
@@ -2515,12 +2514,12 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../project/sourcescommon.cpp" line="148"/>
<source>Generating proxy: %1% complete</source>
<translation type="unfinished"></translation>
<translation>Vytvoření proxy: %1% hotovo</translation>
</message>
<message>
<location filename="../project/sourcescommon.cpp" line="169"/>
<source>Create/Modify Proxy</source>
<translation type="unfinished"></translation>
<translation>Vytvořit/Změnit proxy</translation>
</message>
<message>
<location filename="../project/sourcescommon.cpp" line="172"/>
@@ -2530,12 +2529,12 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../project/sourcescommon.cpp" line="183"/>
<source>Modify Proxy</source>
<translation type="unfinished"></translation>
<translation>Změnit proxy</translation>
</message>
<message>
<location filename="../project/sourcescommon.cpp" line="186"/>
<source>Restore Original</source>
<translation type="unfinished"></translation>
<translation>Obnovit původní</translation>
</message>
<message>
<location filename="../project/sourcescommon.cpp" line="192"/>
@@ -2560,12 +2559,12 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../project/sourcescommon.cpp" line="372"/>
<source>Delete proxy</source>
<translation type="unfinished"></translation>
<translation>Smazat proxy</translation>
</message>
<message>
<location filename="../project/sourcescommon.cpp" line="373"/>
<source>Would you like to delete the proxy file &quot;%1&quot; as well?</source>
<translation type="unfinished"></translation>
<translation>Chcete smazat i soubor proxy &quot;%1&quot;?</translation>
</message>
</context>
<context>
@@ -2820,11 +2819,11 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
</message>
<message>
<source>Set Marker</source>
<translation type="vanished">Nastavit značku</translation>
<translation>Nastavit značku</translation>
</message>
<message>
<source>Set marker name:</source>
<translation type="vanished">Nastavit název značky:</translation>
<translation>Nastavit název značky:</translation>
</message>
<message>
<location filename="../panels/timeline.cpp" line="1568"/>
@@ -2945,47 +2944,47 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../ui/timelinewidget.cpp" line="77"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;Zpět</translation>
<translation>&amp;Zpět</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="78"/>
<source>&amp;Redo</source>
<translation type="unfinished"></translation>
<translation>&amp;Znovu</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="96"/>
<source>C&amp;ut</source>
<translation type="unfinished"></translation>
<translation>Vyj&amp;mout</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="97"/>
<source>Cop&amp;y</source>
<translation type="unfinished">&amp;Kopírovat</translation>
<translation>&amp;Kopírovat</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="100"/>
<source>&amp;Paste</source>
<translation type="unfinished">&amp;Vložit</translation>
<translation>&amp;Vložit</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="110"/>
<source>R&amp;ipple Delete</source>
<translation type="unfinished"></translation>
<translation>&amp;Vytáhnout (smazat a posunout)</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="114"/>
<source>Sequence Settings</source>
<translation type="unfinished"></translation>
<translation>Nastavení sekvence</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="120"/>
<source>&amp;Speed/Duration</source>
<translation type="unfinished"></translation>
<translation>&amp;Rychlost/Doba trvání</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="122"/>
<source>Auto-s&amp;cale</source>
<translation type="unfinished"></translation>
<translation>Automatická &amp;změna velikosti</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="127"/>
@@ -2995,17 +2994,17 @@ Vyhledávat rychle (při hledání se mohou krátce ukázat nepřesné snímky -
<message>
<location filename="../ui/timelinewidget.cpp" line="129"/>
<source>&amp;Nest</source>
<translation type="unfinished"></translation>
<translation>&amp;Vnořovat</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="159"/>
<source>&amp;Reveal in Project</source>
<translation type="unfinished"></translation>
<translation>&amp;Odkrýt v projektu</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="163"/>
<source>R&amp;ename</source>
<translation type="unfinished"></translation>
<translation>&amp;Přejmenovat</translation>
</message>
<message>
<location filename="../ui/timelinewidget.cpp" line="192"/>
@@ -3259,12 +3258,12 @@ Doba trvání: %4</translation>
<name>Transition</name>
<message>
<source>Length:</source>
<translation type="vanished">Délka:</translation>
<translation>Délka:</translation>
</message>
<message>
<location filename="../project/transition.cpp" line="28"/>
<source>Length</source>
<translation type="unfinished"></translation>
<translation>Délka</translation>
</message>
</context>
<context>
@@ -3299,7 +3298,7 @@ Doba trvání: %4</translation>
<message>
<location filename="../effects/internal/vsthost.cpp" line="153"/>
<source>Failed to locate entry point for dynamic library.</source>
<translation type="unfinished"></translation>
<translation>Nepodařilo se najít vstupní bod pro dynamickou knihovnu.</translation>
</message>
<message>
<location filename="../effects/internal/vsthost.cpp" line="181"/>
+35 -35
View File
@@ -27,12 +27,12 @@
<message>
<location filename="../dialogs/advancedvideodialog.cpp" line="21"/>
<source>Advanced Video Settings</source>
<translation type="unfinished"></translation>
<translation>Дополнительные параметры видео</translation>
</message>
<message>
<location filename="../dialogs/advancedvideodialog.cpp" line="33"/>
<source>Pixel Format:</source>
<translation type="unfinished"></translation>
<translation>Формат пикселей:</translation>
</message>
</context>
<context>
@@ -385,12 +385,12 @@
<location filename="../dialogs/exportdialog.cpp" line="576"/>
<location filename="../dialogs/exportdialog.cpp" line="582"/>
<source>Invalid Codec</source>
<translation type="unfinished"></translation>
<translation>Некорректный кодек</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="577"/>
<source>Failed to find a suitable encoder for this codec. Export will likely fail.</source>
<translation type="unfinished"></translation>
<translation>Не удалось найти подходящий кодировщик для этого кодека. Экспорт не гарантирован.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="583"/>
@@ -481,7 +481,7 @@
<message>
<location filename="../dialogs/exportdialog.cpp" line="679"/>
<source>Advanced</source>
<translation type="unfinished"></translation>
<translation>Дополнительно</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="695"/>
@@ -1213,17 +1213,17 @@
<message>
<location filename="../mainwindow.cpp" line="785"/>
<source>Shuttle Left</source>
<translation type="unfinished"></translation>
<translation>Уменьшить скорость</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="786"/>
<source>Shuttle Stop</source>
<translation type="unfinished"></translation>
<translation>Пауза</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="787"/>
<source>Shuttle Right</source>
<translation type="unfinished"></translation>
<translation>Увеличить скорость</translation>
</message>
<message>
<source>Decrease Speed</source>
@@ -1340,27 +1340,27 @@
<message>
<location filename="../mainwindow.cpp" line="892"/>
<source>Selecting Also Seeks</source>
<translation type="unfinished"></translation>
<translation>Выделение с перемоткой</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="897"/>
<source>Edit Tool Also Seeks</source>
<translation type="unfinished"></translation>
<translation>Выделение с перемоткой</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="902"/>
<source>Edit Tool Selects Links</source>
<translation type="unfinished"></translation>
<translation>Выделение выбирает связи</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="907"/>
<source>Seek Also Selects</source>
<translation type="unfinished"></translation>
<translation>Перемотка с выделением</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="912"/>
<source>Seek to the End of Pastes</source>
<translation type="unfinished"></translation>
<translation>Перемотка до конца вставок</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="917"/>
@@ -1370,7 +1370,7 @@
<message>
<location filename="../mainwindow.cpp" line="922"/>
<source>Enable Drag Files to Timeline</source>
<translation>Разрешить перетаскивание файлов на таймлайн извне</translation>
<translation>Разрешить перетаскивание на таймлайн извне</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="927"/>
@@ -1460,17 +1460,17 @@
<message>
<location filename="../mainwindow.cpp" line="1395"/>
<source>Missing recent project</source>
<translation type="unfinished"></translation>
<translation>Отсутствует недавний проект</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1396"/>
<source>The project &apos;%1&apos; no longer exists. Would you like to remove it from the recent projects list?</source>
<translation type="unfinished"></translation>
<translation>Проект &apos;%1&apos; больше не существует. Удалить его из списка недавних?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1508"/>
<source>Invalid aspect ratio</source>
<translation type="unfinished"></translation>
<translation>Некорректное соотношение сторон</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1508"/>
@@ -1480,7 +1480,7 @@
<message>
<location filename="../mainwindow.cpp" line="1511"/>
<source>Enter custom aspect ratio</source>
<translation type="unfinished"></translation>
<translation>Введите другое соотношение сторон</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1511"/>
@@ -1498,17 +1498,17 @@
<message>
<location filename="../project/marker.cpp" line="43"/>
<source>Set Marker</source>
<translation type="unfinished">Установить маркер</translation>
<translation>Установить маркер</translation>
</message>
<message>
<location filename="../project/marker.cpp" line="45"/>
<source>Set clip marker name:</source>
<translation type="unfinished">Установить название маркера клипа:</translation>
<translation>Название маркера клипа:</translation>
</message>
<message>
<location filename="../project/marker.cpp" line="46"/>
<source>Set sequence marker name:</source>
<translation type="unfinished">Установить название маркера последовательности:</translation>
<translation>Название маркера последовательности:</translation>
</message>
</context>
<context>
@@ -1545,7 +1545,7 @@
<message>
<location filename="../project/media.cpp" line="122"/>
<source>%1 field(s) (%2 frame(s))</source>
<translation type="unfinished"></translation>
<translation>полей: %1 (кадров: %2)</translation>
</message>
<message>
<location filename="../project/media.cpp" line="131"/>
@@ -1620,10 +1620,10 @@ Audio Layout: %6</source>
<message numerus="yes">
<location filename="../dialogs/mediapropertiesdialog.cpp" line="59"/>
<source>%n channel(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
<translation>
<numerusform>%n канал</numerusform>
<numerusform>%n канала</numerusform>
<numerusform>%n каналов</numerusform>
</translation>
</message>
<message>
@@ -1639,7 +1639,7 @@ Audio Layout: %6</source>
<message>
<location filename="../dialogs/mediapropertiesdialog.cpp" line="93"/>
<source>Auto (%1)</source>
<translation type="unfinished"></translation>
<translation>Авто (%1)</translation>
</message>
<message>
<location filename="../dialogs/mediapropertiesdialog.cpp" line="106"/>
@@ -1877,22 +1877,22 @@ Audio Layout: %6</source>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="373"/>
<source>Delete All Previews</source>
<translation type="unfinished"></translation>
<translation>Удалить все миниатюры</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="374"/>
<source>Are you sure you want to delete all previews?</source>
<translation type="unfinished"></translation>
<translation>Действительно удалить все миниатюры?</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="378"/>
<source>Previews Deleted</source>
<translation type="unfinished"></translation>
<translation>Миниатюры удалены</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="379"/>
<source>All previews deleted succesfully. You may have to re-open your current project for changes to take effect.</source>
<translation type="unfinished"></translation>
<translation>Все миниатюры успешно удалены. Возможно, понадобится заново открыть проект, чтобы изменения вступили в силу.</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="396"/>
@@ -1947,12 +1947,12 @@ Audio Layout: %6</source>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="491"/>
<source>Delete Previews</source>
<translation type="unfinished"></translation>
<translation>Удалить миниатюры</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="499"/>
<source>Use Software Fallbacks When Possible</source>
<translation type="unfinished"></translation>
<translation>По возможности использовать программную реализацию вместо аппаратной</translation>
</message>
<message>
<location filename="../dialogs/preferencesdialog.cpp" line="503"/>
@@ -2547,7 +2547,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn&apos;t aff
<message>
<location filename="../project/sourcescommon.cpp" line="373"/>
<source>Would you like to delete the proxy file &quot;%1&quot; as well?</source>
<translation type="unfinished"></translation>
<translation>Заодно удалить прокси-файл &quot;%1&quot;?</translation>
</message>
</context>
<context>
@@ -3250,7 +3250,7 @@ Duration: %4</source>
<message>
<location filename="../project/transition.cpp" line="28"/>
<source>Length</source>
<translation type="unfinished"></translation>
<translation>Длительность</translation>
</message>
</context>
<context>
+29
View File
@@ -0,0 +1,29 @@
#include "cursors.h"
#include <QPixmap>
#include <QCursor>
#include <QDebug>
QCursor Olive::Cursor_LeftTrim;
QCursor Olive::Cursor_RightTrim;
QCursor load_cursor(const QString& file, int hotX, int hotY, const bool& right_aligned){
// load specified file into a pixmap
QPixmap temp(file);
// set cursor's horizontal hotspot
if (right_aligned) {
hotX = temp.width() - hotX;
}
// return cursor
return QCursor(temp, hotX, hotY);
}
void init_custom_cursors(){
qInfo() << "Initializing custom cursors";
Olive::Cursor_LeftTrim = load_cursor(":/cursors/left_side.png", 0, -1, false);
Olive::Cursor_RightTrim = load_cursor(":/cursors/right_side.png", 0, -1, true);
qInfo() << "Finished initializing custom cursors";
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef CURSORS_H
#define CURSORS_H
#include <QCursor>
void init_custom_cursors();
namespace Olive{
extern QCursor Cursor_LeftTrim;
extern QCursor Cursor_RightTrim;
}
#endif // CURSORS_H
+104 -17
View File
@@ -23,6 +23,7 @@
#include "mainwindow.h"
#include "ui/rectangleselect.h"
#include "playback/playback.h"
#include "ui/cursors.h"
#include "debug.h"
#include "project/effect.h"
@@ -124,7 +125,9 @@ void TimelineWidget::show_context_menu(const QPoint& pos) {
// set autoscale to the first selected clip
autoscaleAction->setChecked(selected_clips.at(0)->autoscale);
menu.addAction(tr("Link/Unlink"), panel_timeline, SLOT(toggle_links()));
menu.addAction(tr("Enable/Disable"), mainWindow, SLOT(toggle_enable_clips()));
menu.addAction(tr("Link/Unlink"), panel_timeline, SLOT(toggle_links()));
menu.addAction(tr("&Nest"), mainWindow, SLOT(nest()));
@@ -1977,62 +1980,132 @@ void TimelineWidget::mouseMoveEvent(QMouseEvent *event) {
} else if (panel_timeline->tool == TIMELINE_TOOL_POINTER ||
panel_timeline->tool == TIMELINE_TOOL_RIPPLE ||
panel_timeline->tool == TIMELINE_TOOL_ROLLING) {
// hide any tooltip that may be currently showing
QToolTip::hideText();
// cache cursor position
QPoint pos = event->pos();
//
// check to see if the cursor is on a clip edge
//
// threshold around a trim point that the cursor can be within and still considered "trimming"
int lim = 5;
long mouse_frame_lower = panel_timeline->getTimelineFrameFromScreenPoint(pos.x()-lim)-1;
long mouse_frame_upper = panel_timeline->getTimelineFrameFromScreenPoint(pos.x()+lim)+1;
// current track that the cursor is on
int mouse_track = getTrackFromScreenPoint(pos.y());
long mouse_frame_lower = panel_timeline->getTimelineFrameFromScreenPoint(pos.x()-lim)-1;
long mouse_frame_upper = panel_timeline->getTimelineFrameFromScreenPoint(pos.x()+lim)+1;
bool found = false;
// used to determine whether we the cursor found a trim point or not
bool found = false;
// used to determine whether the cursor is within the rect of a clip
bool cursor_contains_clip = false;
// used to determine how close the cursor is to a trim point
// (and more specifically, whether another point is closer or not)
int closeness = INT_MAX;
// while we loop through the clips, we cache the maximum/minimum tracks in this sequence
int min_track = INT_MAX;
int max_track = INT_MIN;
// we default to selecting no transition, but set this accordingly if the cursor is on a transition
panel_timeline->transition_select = TA_NO_TRANSITION;
// set currently trimming clip to -1 (aka null)
panel_timeline->trim_target = -1;
// loop through current clips in the sequence
for (int i=0;i<sequence->clips.size();i++) {
Clip* c = sequence->clips.at(i);
if (c != nullptr) {
// cache track range
min_track = qMin(min_track, c->track);
max_track = qMax(max_track, c->track);
// if this clip is on the same track the mouse is
if (c->track == mouse_track) {
// if this cursor is inside the boundaries of this clip (hovering over the clip)
if (panel_timeline->cursor_frame >= c->timeline_in &&
panel_timeline->cursor_frame <= c->timeline_out) {
// acknowledge that we are hovering over a clip
cursor_contains_clip = true;
// start a timer to show a tooltip about this clip
tooltip_timer.start();
tooltip_clip = i;
if (c->get_opening_transition() != nullptr && panel_timeline->cursor_frame <= c->timeline_in + c->get_opening_transition()->get_true_length()) {
// check if the cursor is specifically hovering over one of the clip's transitions
if (c->get_opening_transition() != nullptr
&& panel_timeline->cursor_frame <= c->timeline_in + c->get_opening_transition()->get_true_length()) {
panel_timeline->transition_select = TA_OPENING_TRANSITION;
} else if (c->get_closing_transition() != nullptr && panel_timeline->cursor_frame >= c->timeline_out - c->get_closing_transition()->get_true_length()) {
} else if (c->get_closing_transition() != nullptr
&& panel_timeline->cursor_frame >= c->timeline_out - c->get_closing_transition()->get_true_length()) {
panel_timeline->transition_select = TA_CLOSING_TRANSITION;
}
}
// is the cursor hovering around the clip's IN point?
if (c->timeline_in > mouse_frame_lower && c->timeline_in < mouse_frame_upper) {
// test how close this IN point is to the cursor
int nc = qAbs(c->timeline_in + 1 - panel_timeline->cursor_frame);
// and test whether it's closer than the last in/out point we found
if (nc < closeness) {
// if so, this is the point we'll make active for now (unless we find a closer one later)
panel_timeline->trim_target = i;
panel_timeline->trim_in_point = true;
closeness = nc;
found = true;
found = true;
}
}
// is the cursor hovering around the clip's OUT point?
if (c->timeline_out > mouse_frame_lower && c->timeline_out < mouse_frame_upper) {
// test how close this OUT point is to the cursor
int nc = qAbs(c->timeline_out - 1 - panel_timeline->cursor_frame);
// and test whether it's closer than the last in/out point we found
if (nc < closeness) {
// if so, this is the point we'll make active for now (unless we find a closer one later)
panel_timeline->trim_target = i;
panel_timeline->trim_in_point = false;
closeness = nc;
found = true;
found = true;
}
}
// the pointer can be used to resize/trim transitions, here we test if the
// cursor is within the trim point of one of the clip's transitions
if (panel_timeline->tool == TIMELINE_TOOL_POINTER) {
// if the clip has an opening transition
if (c->get_opening_transition() != nullptr) {
// cache the timeline frame where the transition ends
long transition_point = c->timeline_in + c->get_opening_transition()->get_true_length();
// check if the cursor is hovering around it (within the threshold)
if (transition_point > mouse_frame_lower && transition_point < mouse_frame_upper) {
// similar to above, test how close it is and if it's closer, make this active
int nc = qAbs(transition_point - 1 - panel_timeline->cursor_frame);
if (nc < closeness) {
panel_timeline->trim_target = i;
@@ -2043,9 +2116,17 @@ void TimelineWidget::mouseMoveEvent(QMouseEvent *event) {
}
}
}
// if the clip has a closing transition
if (c->get_closing_transition() != nullptr) {
// cache the timeline frame where the transition starts
long transition_point = c->timeline_out - c->get_closing_transition()->get_true_length();
// check if the cursor is hovering around it (within the threshold)
if (transition_point > mouse_frame_lower && transition_point < mouse_frame_upper) {
// similar to above, test how close it is and if it's closer, make this active
int nc = qAbs(transition_point + 1 - panel_timeline->cursor_frame);
if (nc < closeness) {
panel_timeline->trim_target = i;
@@ -2059,16 +2140,22 @@ void TimelineWidget::mouseMoveEvent(QMouseEvent *event) {
}
}
}
}
/*if (cursor_contains_clip) {
QToolTip::showText(mapToGlobal(event->pos()), "HOVER OVER CLIP");
}*/
if (found) {
setCursor(Qt::SizeHorCursor);
} else {
panel_timeline->trim_target = -1;
}
// look for track heights
// if the cursor is indeed on a clip edge, we set the cursor accordingly
if (found) {
if (panel_timeline->trim_in_point) { // if we're trimming an IN point
setCursor(Olive::Cursor_LeftTrim);
} else { // if we're trimming an OUT point
setCursor(Olive::Cursor_RightTrim);
}
} else {
// we didn't find a trim target, so we must be doing something else
// (e.g. dragging a clip or resizing the track heights)
// check to see if we're resizing a track height
int track_y = 0;
for (int i=0;i<panel_timeline->get_track_height_size(bottom_align);i++) {
int track = (bottom_align) ? -1-i : i;