Skip to content

Commit

Permalink
video slider fix for selected region and changes to mousemove in Qt +…
Browse files Browse the repository at this point in the history
… merged channels fix w/ ffprobe changes for stream selection... new bugfix release needed
ozmartian committed Feb 7, 2018
1 parent db16b16 commit 2304e12
Showing 3 changed files with 72 additions and 38 deletions.
81 changes: 58 additions & 23 deletions _packaging/debian/changelog
Original file line number Diff line number Diff line change
@@ -1,45 +1,80 @@
vidcutter (5.5.0-1) unstable; urgency=medium
vidcutter (5.5.0-1) stable; urgency=medium

* The most requested feature is finally added; media stream mapping! A
new media settings button has been added and is enabled for use when
* The most requested feature is finally added; media stream configuration! A
new media stream button has been added and enabled for use when
clips are all derived from the same source media OR media files added
manually all share the same codecs, formats, etc... A view of all
detected streams including video, audio, text/subtitles, metadata/chapters
will be presented upon which you can enable/disable what you want mapped
and carried across to the target media produced for you.

As always, suggestions for further improvements to this, whether visual
or technical via the Issues page; which I definitely, most assuredly,
promise to start paying attention to. I'm mearly all out of new app ideas
+ innovations so I have no choice :-)
detected streams including video, audio, text/subtitles. Chapters are not
included as they are treated differently by FFmpeg and followng the usual
rule of thumb in VidCutter which is they will be included in your end
result if the original source is not corrupt or in some weird non-standard
configuration.

* Migrated main toolbar buttons from QToolBar + QActions to new custom
widget VCToolBarButton handling QPushButton with attached. This allows
working pressed states on existing toolbar buttons which QToolBar buttons
(for reasons I cannot figure out) do not.

* FFmpeg category added to settings dialog for users on Linux systems
excluding AppImage, to cater for releases where the latest FFmpeg binaries
are not prebundled. This allows users to set a different path to a newer
set of FFmpeg binaries if they are stuck on Linux distros only offering
older versions of FFmpeg such as 2.8 and below which prevents SmartCut
from working to its full potential.
(for reasons I cannot fathom) do not.

* Tools section added to settings for setting paths to three main tools
used by VidCutter; FFmpeg, FFprobe and MediaInfo. Set to Defaults
button reverts changes to defaults, especially useful for users of
bundled packages of app (AppImage, Windows and macOS which contain
these tools prepacked). Allows you to use different versions of said
tools.

* End of file is now being observed in the mpv library event pool so that
playback state resets position back to the start, in pause and all
controls in their default states.

* Ability to set clip index list to the left or right (default) of main
window.

* Support for WTV (.wtv - Windows Recorded TV Show) media files
(playback and cutting/joining) added.

* New code for restarting app whe changing themes is causing problems in Windows,
starting app again resolves things. My patience for Windows shell is at an all
time low so will fix this when my care factor returns (if ever). Windows shell
is a joke.

* Required dependency of PyOpenGL python module introduced for users on slightly
older Ubuntu, Fedora and Ubuntu based Linux distributions. such as Mint or
ElementaryOS. This now fixes things if you were experiencing immediate
segmentation faults when launching. no OpenGL context could be created. Again,
this only applies to Linux and only to those distro mentioned above. No user
manual tasks needed, Ubuntu and Fedora packaging scripts already updated so
it should all be seamless to the end user.

* ffprobe code fixed for media that is either problematic or imperfect. stdout
and stderr streams separated for ffprobe calls, thus fixing ffprobe JSON parsing
errors and allowing the addition of the new .WTV media file format.

* Minor changes/improvements to a few other front panel buttons w/ pressed states
where previously unavailable + minor cosmetic improvements to color schemes
of hover/active state buttons

* Application desktop and appdata metadata files now using reverse domain
notation for their file names
* Linux desktop and appdata metadata files switched to reverse domain
notation file names as per freedesktop.org specs

* Fullscreen mode rewrite for Qt 5.10 changes + better support in wayland.

* OpenGL helpers added to X11 and Wayland based Linux platforms to better
assist with fullscreen functionality and video render compatibility any
where an OpenGL context can be created.

* Updated keyboard shortcuts information to include some added keyboard
and mouse based shortcuts.

* Hardened logic for app quit when clips exist to prompt for project save
* Defined cutting regions shown on the timeline are now hidden during
the "generating thumbnails" process (mainly evident when turning
thumbnails on/off or resizing the application's window)

* Better detection and prompting if application exit is attempted while
video processing jobs in progress, if user decides to continue quitting
then kill all VidCutter associated jobs gracefully and force the usual
cleanup routines

-- Pete Alexandrou <[email protected]> Wed, 11 Dec 2017 19:42:00 +0800
-- Pete Alexandrou <[email protected]> Mon, 05 Feb 2018 08:34 +0800

vidcutter (5.0.5-2) stable; urgency=medium

5 changes: 2 additions & 3 deletions vidcutter/libs/videoservice.py
Original file line number Diff line number Diff line change
@@ -577,8 +577,7 @@ def version(self) -> str:

def mediainfo(self, source: str, output: str='HTML') -> str:
args = '--output={0} "{1}"'.format(output, source)
result = self.cmdExec(self.backends.mediainfo, args, True, True)
return result.strip()
return self.cmdExec(self.backends.mediainfo, args, True, True)

def cmdExec(self, cmd: str, args: str=None, output: bool=False, suppresslog: bool=False):
if self.proc.state() == QProcess.NotRunning:
@@ -592,7 +591,7 @@ def cmdExec(self, cmd: str, args: str=None, output: bool=False, suppresslog: boo
self.proc.readyReadStandardOutput.connect(
partial(self.cmdOut, self.proc.readAllStandardOutput().data().decode().strip()))
self.proc.waitForFinished(-1)
if cmd == self.backends.mediainfo:
if cmd in {self.backends.ffprobe, self.backends.mediainfo}:
self.proc.setProcessChannelMode(QProcess.MergedChannels)
if output:
cmdoutput = self.proc.readAllStandardOutput().data().decode().strip()
24 changes: 12 additions & 12 deletions vidcutter/videoslider.py
Original file line number Diff line number Diff line change
@@ -379,18 +379,18 @@ def wheelEvent(self, event: QWheelEvent) -> None:
def keyPressEvent(self, event: QKeyEvent) -> None:
qApp.sendEvent(self.parent, event)

def mouseMoveEvent(self, event: QMouseEvent) -> None:
opt = QStyleOptionSlider()
self.initStyleOption(opt)
handle = self.style().subControlRect(QStyle.CC_Slider, opt, QStyle.SC_SliderHandle, self)
if handle.x() <= event.pos().x() <= (handle.x() + handle.width()):
self.setCursor(Qt.PointingHandCursor)
self._handleHover = True
else:
self.unsetCursor()
self._handleHover = False
self.initStyle()
super(VideoSlider, self).mouseMoveEvent(event)
# def mouseMoveEvent(self, event: QMouseEvent) -> None:
# opt = QStyleOptionSlider()
# self.initStyleOption(opt)
# handle = self.style().subControlRect(QStyle.CC_Slider, opt, QStyle.SC_SliderHandle, self)
# if handle.x() <= event.pos().x() <= (handle.x() + handle.width()):
# self.setCursor(Qt.PointingHandCursor)
# self._handleHover = True
# else:
# self.unsetCursor()
# self._handleHover = False
# self.initStyle()
# super(VideoSlider, self).mouseMoveEvent(event)

def eventFilter(self, obj: QObject, event: QMouseEvent) -> bool:
if event.type() == QEvent.MouseButtonRelease and event.button() == Qt.LeftButton:

0 comments on commit 2304e12

Please sign in to comment.