Browse Source

Add files

master
Fincer 7 years ago
parent
commit
ce6ef1db27
70 changed files with 2588 additions and 0 deletions
  1. +23
    -0
      cr2fits/PKGBUILD
  2. +369
    -0
      cr2fits/cr2fits.py
  3. +19
    -0
      cr2hdr/PKGBUILD
  4. +72
    -0
      dolphin/media-autoplay.patch
  5. +25
    -0
      kde-servicemenus-cr2fits/PKGBUILD
  6. +23
    -0
      kde-servicemenus-dualiso/PKGBUILD
  7. +14
    -0
      kde-servicemenus-dualiso/dualiso.desktop
  8. +30
    -0
      kde-servicemenus-hexstrings/PKGBUILD
  9. +32
    -0
      kde-servicemenus-hexstrings/hexstrings.patch
  10. +26
    -0
      kde-servicemenus-mediainfo/107335-AudioVideoinfo-qt.desktop
  11. +27
    -0
      kde-servicemenus-mediainfo/PKGBUILD
  12. +32
    -0
      kde-servicemenus-mediainfo/program-cleanup.patch
  13. +20
    -0
      kde-servicemenus-multimediatools/PKGBUILD
  14. +67
    -0
      kde-servicemenus-multimediatools/ffmpeg-fileconversion-audio.sh
  15. +92
    -0
      kde-servicemenus-multimediatools/ffmpeg-fileconversion-video.sh
  16. +22
    -0
      kde-servicemenus-multimediatools/ffmpeg-fileconversion.desktop
  17. +73
    -0
      kde-servicemenus-multimediatools/ffmpeg-filelengthcut.sh
  18. +30
    -0
      kde-servicemenus-unlockpdf/PKGBUILD
  19. +31
    -0
      kde-servicemenus-unlockpdf/pdfunlock.patch
  20. +17
    -0
      mlv2dng/PKGBUILD
  21. +19
    -0
      mlvdump/PKGBUILD
  22. +16
    -0
      pano2vr/.AURINFO
  23. +38
    -0
      pano2vr/PKGBUILD
  24. +11
    -0
      pano2vr/changedir.patch
  25. +8
    -0
      pano2vr/pano2vr.desktop
  26. +29
    -0
      panotour/PKGBUILD
  27. +4
    -0
      panotour/panotour
  28. +10
    -0
      panotour/panotour.desktop
  29. +11
    -0
      panotour/panotour.install
  30. BIN
      panotour/panotour.png
  31. BIN
      panotour/panotour.tar.gz
  32. +29
    -0
      panotourpro/PKGBUILD
  33. +4
    -0
      panotourpro/panotourpro
  34. +11
    -0
      panotourpro/panotourpro.desktop
  35. +11
    -0
      panotourpro/panotourpro.install
  36. BIN
      panotourpro/panotourpro.png
  37. +33
    -0
      photoscan-pro/PKGBUILD
  38. +10
    -0
      photoscan-pro/photoscan-pro.desktop
  39. +11
    -0
      photoscan-pro/photoscan-pro.install
  40. BIN
      photoscan-pro/photoscan-pro.png
  41. +4
    -0
      photoscan-pro/photoscan-pro.runtime
  42. +11
    -0
      photoscan-pro/qtfix.patch
  43. +10
    -0
      photoscan-pro/qtfix126.patch
  44. +26
    -0
      photoscan/PKGBUILD
  45. +10
    -0
      photoscan/photoscan.desktop
  46. +11
    -0
      photoscan/photoscan.install
  47. BIN
      photoscan/photoscan.png
  48. +4
    -0
      photoscan/photoscan.runtime
  49. +43
    -0
      playonlinux/0001-remove-menuitems.patch
  50. +185
    -0
      playonlinux/0002-add-shortcutitems.patch
  51. +94
    -0
      playonlinux/0003-add-addremoveprograms.patch
  52. +46
    -0
      playonlinux/0004-change-wineversions.patch
  53. +68
    -0
      playonlinux/0005-add-optimussupport.patch
  54. +27
    -0
      playonlinux/0006-disable-updatenotification.patch
  55. +42
    -0
      playonlinux/0007-disable-closingandwinemessage.patch
  56. +53
    -0
      qgifer/0001_cmakelinkingfix.patch
  57. +72
    -0
      qgifer/0001_printgiferrorfix.patch.disabled
  58. +38
    -0
      qgifer/0001_removeframelimit_addcodecs.patch
  59. +157
    -0
      qgifer/giflibport.patch
  60. +53
    -0
      qgifer/qt5_sourcecodepatches.patch
  61. +19
    -0
      wine/custompatch_glsl_shader.patch
  62. +80
    -0
      wine/custompatch_msi-add-dummyactionthreads.patch
  63. +11
    -0
      wine/custompatch_photoshop_getticks_input.c.patch
  64. +66
    -0
      wine/custompatch_photoshop_keepfocus_message.c.patch
  65. +30
    -0
      wine/custompatch_photoshop_tooltip_win.c.patch
  66. +57
    -0
      zsnes-netplay/PKGBUILD
  67. +38
    -0
      zsnes-netplay/custompath.patch
  68. +24
    -0
      zsnes-netplay/libpng.patch
  69. +10
    -0
      zsnes-netplay/zsnes.desktop
  70. BIN
      zsnes-netplay/zsnesnet.tar.gz

+ 23
- 0
cr2fits/PKGBUILD View File

@ -0,0 +1,23 @@
# Maintainer: Sabart Otto - Seberm <seberm[at]gmail[dot].com
pkgname=cr2fits
pkgver=1
pkgrel=1
pkgdesc="A script to convert RAW images to FITS images."
url=()
arch=('any')
license=('GPL')
install=''
source=(https://github.com/eaydin/cr2fits/blob/master/cr2fits.py)
depends=('python2' 'python2-pyfits' 'dcraw' 'dolphin')
optdepends=()
conflicts=()
provides=''
makedepends=()
package() {
mkdir -p $pkgdir/usr/bin/
cp $srcdir/$pkgname.py $pkgdir/usr/bin/$pkgname.py
chmod 755 $pkgdir/usr/bin/$pkgname.py
}
md5sums=('04924ee6fa2529d57e83603e73516984')

+ 369
- 0
cr2fits/cr2fits.py View File

@ -0,0 +1,369 @@
#!/usr/bin/python2
# -*- coding: utf-8 -*-
# 3rd attempt
# 15th Feb 2012, 09:38AM
# http://eayd.in
# http://github.com/eaydin/cr2fits
### This script is redistributable in anyway.
### But it includes netpbmfile.py which is NOT written by M. Emre Aydin.
### It has its own copyright and it has been stated in the source code.
### BUT, there's nothing to worry about usage, laws etc.
### Enjoy.
sourceweb = "http://github.com/eaydin/cr2fits"
version = "1.0.3"
try :
from copy import deepcopy
import numpy, pyfits, subprocess, sys, re, datetime, math
except :
print("ERROR : Missing some libraries!")
print("Check if you have the following :\n\tnumpy\n\tpyfits\n\tdcraw")
print("For details : %s" % sourceweb)
raise SystemExit
### --- NETPBMFILE SOURCE CODE --- ###
# Copyright (c) 2011, Christoph Gohlke
# Copyright (c) 2011, The Regents of the University of California
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the copyright holders nor the names of any
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
__all__ = ['NetpbmFile']
class NetpbmFile(object):
"""Read and write Netpbm PAM, PBM, PGM, PPM, files."""
_types = {b'P1': b'BLACKANDWHITE', b'P2': b'GRAYSCALE', b'P3': b'RGB',
b'P4': b'BLACKANDWHITE', b'P5': b'GRAYSCALE', b'P6': b'RGB',
b'P7 332': b'RGB', b'P7': b'RGB_ALPHA'}
def __init__(self, arg=None, **kwargs):
"""Initialize instance from filename, open file, or numpy array."""
for attr in ('header', 'magicnum', 'width', 'height', 'maxval',
'depth', 'tupltypes', '_filename', '_fileid', '_data'):
setattr(self, attr, None)
if arg is None:
self._fromdata([], **kwargs)
elif isinstance(arg, basestring):
self._fileid = open(arg, 'rb')
self._filename = arg
self._fromfile(self._fileid, **kwargs)
elif hasattr(arg, 'seek'):
self._fromfile(arg, **kwargs)
self._fileid = arg
else:
self._fromdata(arg, **kwargs)
def asarray(self, copy=True, cache=False, **kwargs):
"""Return image data from file as numpy array."""
data = self._data
if data is None:
data = self._read_data(self._fileid, **kwargs)
if cache:
self._data = data
else:
return data
return deepcopy(data) if copy else data
def write(self, arg, **kwargs):
"""Write instance to file."""
if hasattr(arg, 'seek'):
self._tofile(arg, **kwargs)
else:
with open(arg, 'wb') as fid:
self._tofile(fid, **kwargs)
def close(self):
"""Close open file. Future asarray calls might fail."""
if self._filename and self._fileid:
self._fileid.close()
self._fileid = None
def __del__(self):
self.close()
def _fromfile(self, fileid):
"""Initialize instance from open file."""
fileid.seek(0)
data = fileid.read(4096)
if (len(data) < 7) or not (b'0' < data[1:2] < b'8'):
raise ValueError("Not a Netpbm file:\n%s" % data[:32])
try:
self._read_pam_header(data)
except Exception:
try:
self._read_pnm_header(data)
except Exception:
raise ValueError("Not a Netpbm file:\n%s" % data[:32])
def _read_pam_header(self, data):
"""Read PAM header and initialize instance."""
regroups = re.search(
b"(^P7[\n\r]+(?:(?:[\n\r]+)|(?:#.*)|"
b"(HEIGHT\s+\d+)|(WIDTH\s+\d+)|(DEPTH\s+\d+)|(MAXVAL\s+\d+)|"
b"(?:TUPLTYPE\s+\w+))*ENDHDR\n)", data).groups()
self.header = regroups[0]
self.magicnum = b'P7'
for group in regroups[1:]:
key, value = group.split()
setattr(self, unicode(key).lower(), int(value))
matches = re.findall(b"(TUPLTYPE\s+\w+)", self.header)
self.tupltypes = [s.split(None, 1)[1] for s in matches]
def _read_pnm_header(self, data):
"""Read PNM header and initialize instance."""
bpm = data[1:2] in b"14"
regroups = re.search(b"".join((
b"(^(P[123456]|P7 332)\s+(?:#.*[\r\n])*",
b"\s*(\d+)\s+(?:#.*[\r\n])*",
b"\s*(\d+)\s+(?:#.*[\r\n])*" * (not bpm),
b"\s*(\d+)\s(?:\s*#.*[\r\n]\s)*)")), data).groups() + (1, ) * bpm
self.header = regroups[0]
self.magicnum = regroups[1]
self.width = int(regroups[2])
self.height = int(regroups[3])
self.maxval = int(regroups[4])
self.depth = 3 if self.magicnum in b"P3P6P7 332" else 1
self.tupltypes = [self._types[self.magicnum]]
def _read_data(self, fileid, byteorder='>'):
"""Return image data from open file as numpy array."""
fileid.seek(len(self.header))
data = fileid.read()
dtype = 'u1' if self.maxval < 256 else byteorder + 'u2'
depth = 1 if self.magicnum == b"P7 332" else self.depth
shape = [-1, self.height, self.width, depth]
size = numpy.prod(shape[1:])
if self.magicnum in b"P1P2P3":
data = numpy.array(data.split(None, size)[:size], dtype)
data = data.reshape(shape)
elif self.maxval == 1:
shape[2] = int(math.ceil(self.width / 8))
data = numpy.frombuffer(data, dtype).reshape(shape)
data = numpy.unpackbits(data, axis=-2)[:, :, :self.width, :]
else:
data = numpy.frombuffer(data, dtype)
data = data[:size * (data.size // size)].reshape(shape)
if data.shape[0] < 2:
data = data.reshape(data.shape[1:])
if data.shape[-1] < 2:
data = data.reshape(data.shape[:-1])
if self.magicnum == b"P7 332":
rgb332 = numpy.array(list(numpy.ndindex(8, 8, 4)), numpy.uint8)
rgb332 *= [36, 36, 85]
data = numpy.take(rgb332, data, axis=0)
return data
def _fromdata(self, data, maxval=None):
"""Initialize instance from numpy array."""
data = numpy.array(data, ndmin=2, copy=True)
if data.dtype.kind not in "uib":
raise ValueError("not an integer type: %s" % data.dtype)
if data.dtype.kind == 'i' and numpy.min(data) < 0:
raise ValueError("data out of range: %i" % numpy.min(data))
if maxval is None:
maxval = numpy.max(data)
maxval = 255 if maxval < 256 else 65535
if maxval < 0 or maxval > 65535:
raise ValueError("data out of range: %i" % maxval)
data = data.astype('u1' if maxval < 256 else '>u2')
self._data = data
if data.ndim > 2 and data.shape[-1] in (3, 4):
self.depth = data.shape[-1]
self.width = data.shape[-2]
self.height = data.shape[-3]
self.magicnum = b'P7' if self.depth == 4 else b'P6'
else:
self.depth = 1
self.width = data.shape[-1]
self.height = data.shape[-2]
self.magicnum = b'P5' if maxval > 1 else b'P4'
self.maxval = maxval
self.tupltypes = [self._types[self.magicnum]]
self.header = self._header()
def _tofile(self, fileid, pam=False):
"""Write Netbm file."""
fileid.seek(0)
fileid.write(self._header(pam))
data = self.asarray(copy=False)
if self.maxval == 1:
data = numpy.packbits(data, axis=-1)
data.tofile(fileid)
def _header(self, pam=False):
"""Return file header as byte string."""
if pam or self.magicnum == b'P7':
header = "\n".join(("P7",
"HEIGHT %i" % self.height,
"WIDTH %i" % self.width,
"DEPTH %i" % self.depth,
"MAXVAL %i" % self.maxval,
"\n".join("TUPLTYPE %s" % unicode(i) for i in self.tupltypes),
"ENDHDR\n"))
elif self.maxval == 1:
header = "P4 %i %i\n" % (self.width, self.height)
elif self.depth == 1:
header = "P5 %i %i %i\n" % (self.width, self.height, self.maxval)
else:
header = "P6 %i %i %i\n" % (self.width, self.height, self.maxval)
if sys.version_info[0] > 2:
header = bytes(header, 'ascii')
return header
def __str__(self):
"""Return information about instance."""
return unicode(self.header)
if sys.version_info[0] > 2:
basestring = str
unicode = lambda x: str(x, 'ascii')
### --- END OF NETPBMFILE SOURCE CODE --- ###
### CR2FITS SOURCE CODE ###
try :
cr2FileName = sys.argv[1]
colorInput = int(sys.argv[2]) # 0=R 1=G 2=B
except :
print("ERROR : You probably don't know how to use it?")
print("./cr2fits.py <cr2filename> <color-index>")
print("The <color-index> can take 3 values:0,1,2 for R,G,B respectively.")
print("Example :\n\t$ ./cr2fits.py myimage.cr2 1")
print("The above example will create 2 outputs.")
print("\tmyimage.ppm : The PPM, which you can delete.")
print("\tmyimage-G.fits : The FITS image in the Green channel, which is the purpose!")
print("For details : http://github.com/eaydin/cr2fits")
print("Version : %s" % version)
raise SystemExit
colors = {0:"Red",1:"Green",2:"Blue"}
colorState = any([True for i in colors.keys() if i == colorInput])
if colorState == False :
print("ERROR : Color value can be set as 0:Red, 1:Green, 2:Blue.")
raise SystemExit
print("Reading file %s...") % cr2FileName
try :
#Converting the CR2 to PPM
p = subprocess.Popen(["dcraw","-6","-j","-W",cr2FileName]).communicate()[0]
#Getting the EXIF of CR2 with dcraw
p = subprocess.Popen(["dcraw","-i","-v",cr2FileName],stdout=subprocess.PIPE)
cr2header = p.communicate()[0]
#Catching the Timestamp
m = re.search('(?<=Timestamp:).*',cr2header)
date1=m.group(0).split()
months = { 'Jan' : 1, 'Feb' : 2, 'Mar' : 3, 'Apr' : 4, 'May' : 5, 'Jun' : 6, 'Jul' : 7, 'Aug' : 8, 'Sep' : 9, 'Oct' : 10, 'Nov' : 11, 'Dec' : 12 }
date = datetime.datetime(int(date1[4]),months[date1[1]],int(date1[2]),int(date1[3].split(':')[0]),int(date1[3].split(':')[1]),int(date1[3].split(':')[2]))
date ='{0:%Y-%m-%d %H:%M:%S}'.format(date)
#Catching the Shutter Speed
m = re.search('(?<=Shutter:).*(?=sec)',cr2header)
shutter = m.group(0).strip()
#Catching the Aperture
m = re.search('(?<=Aperture: f/).*',cr2header)
aperture = m.group(0).strip()
#Catching the ISO Speed
m = re.search('(?<=ISO speed:).*',cr2header)
iso = m.group(0).strip()
#Catching the Focal length
m = re.search('(?<=Focal length: ).*(?=mm)',cr2header)
focal = m.group(0).strip()
#Catching the Original Filename of the cr2
m = re.search('(?<=Filename:).*',cr2header)
original_file = m.group(0).strip()
#Catching the Camera Type
m = re.search('(?<=Camera:).*',cr2header)
camera = m.group(0).strip()
except :
print("ERROR : Something went wrong with dcraw. Do you even have dcraw?")
raise SystemExit
print("Reading the PPM output...")
try :
#Reading the PPM
ppm_name = cr2FileName.split('.')[0] + '.ppm'
im_ppm = NetpbmFile(ppm_name).asarray()
except :
print("ERROR : Something went wrong while reading the PPM file.")
raise SystemExit
print("Extracting %s color channels... (may take a while)" % colors[colorInput])
try :
#Extracting the Green Channel Only
im_green = numpy.zeros((im_ppm.shape[0],im_ppm.shape[1]),dtype=numpy.uint16)
for row in xrange(0,im_ppm.shape[0]) :
for col in xrange(0,im_ppm.shape[1]) :
im_green[row,col] = im_ppm[row,col][colorInput]
except :
print("ERROR : Something went wrong while extracting color channels.")
raise SystemExit
print("Creating the FITS file...")
try :
#Creating the FITS File
hdu = pyfits.PrimaryHDU(im_green)
hdu.header.set('OBSTIME',date)
hdu.header.set('EXPTIME',shutter)
hdu.header.set('APERTUR',aperture)
hdu.header.set('ISO',iso)
hdu.header.set('FOCAL',focal)
hdu.header.set('ORIGIN',original_file)
hdu.header.set('FILTER',colors[colorInput])
hdu.header.set('CAMERA',camera)
hdu.header.add_comment('FITS File Created with cr2fits.py available at %s'%(sourceweb))
hdu.header.add_comment('cr2fits.py version %s'%(version))
hdu.header.add_comment('EXPTIME is in seconds.')
hdu.header.add_comment('APERTUR is the ratio as in f/APERTUR')
hdu.header.add_comment('FOCAL is in mm')
except :
print("ERROR : Something went wrong while creating the FITS file.")
raise SystemExit
print("Writing the FITS file...")
try :
hdu.writeto(cr2FileName.split('.')[0]+"-"+colors[colorInput][0]+'.fits')
except :
print("ERROR : Something went wrong while writing the FITS file. Maybe it already exists?")
raise SystemExit
print("Conversion successful!")

+ 19
- 0
cr2hdr/PKGBUILD View File

@ -0,0 +1,19 @@
pkgname=cr2hdr
pkgver=2014.05.07
pkgrel=1
pkgdesc="Dual ISO image processing tool for Canon DSLR's with Magic Lantern firmware."
arch=('any')
url='https://bitbucket.org/hudson/magic-lantern'
license="GPL"
depends=('perl-image-exiftool' 'dcraw')
optdepends=('octave')
makedepends=('wget' 'p7zip')
source=(https://bitbucket.org/rufustfirefly/magic-lantern/downloads/cr2hdr-static.linux.x86.2014-06-19-f9a29c7c0685.7z)
md5sums=('a526d2f700603003ade464e0521f8e23')
package()
{
mv $srcdir/cr2hdr-static.linux.x86.2014-06-19-f9a29c7c0685 $srcdir/cr2hdr
mkdir -p "$pkgdir/usr/bin"
cp -ar $srcdir/cr2hdr "$pkgdir/usr/bin"
}

+ 72
- 0
dolphin/media-autoplay.patch View File

@ -0,0 +1,72 @@
--- a/src/panels/information/phononwidget.cpp
+++ b/src/panels/information/phononwidget.cpp
@@ -30,6 +30,7 @@
#include <QHBoxLayout>
#include <QShowEvent>
#include <QToolButton>
+#include <QCheckBox>
#include <QDialog>
#include <QIcon>
#include <KIconLoader>
@@ -69,6 +70,7 @@
m_topLayout(0),
m_media(0),
m_seekSlider(0),
+ m_playAut(0),
m_audioOutput(0),
m_videoPlayer(0)
{
@@ -79,6 +81,9 @@
if (m_url != url) {
stop(); // emits playingStopped() signal
m_url = url;
+ if(m_playAut ->isChecked()){
+ play();
+ }
}
}
@@ -115,6 +120,8 @@
controlsLayout->setMargin(0);
controlsLayout->setSpacing(0);
+ m_playAut = new QCheckBox(this);
+
m_playButton = new QToolButton(this);
m_stopButton = new QToolButton(this);
m_seekSlider = new Phonon::SeekSlider(this);
@@ -122,11 +129,15 @@
controlsLayout->addWidget(m_playButton);
controlsLayout->addWidget(m_stopButton);
controlsLayout->addWidget(m_seekSlider);
+ controlsLayout->addWidget(m_playAut);
m_topLayout->addLayout(controlsLayout);
const int smallIconSize = IconSize(KIconLoader::Small);
const QSize buttonSize(smallIconSize, smallIconSize);
+
+ m_playAut->setToolTip(i18n("play automatically"));
+ m_playAut->setIconSize(buttonSize);
m_playButton->setToolTip(i18n("play"));
m_playButton->setIconSize(buttonSize);
--- a/src/panels/information/phononwidget.h
+++ b/src/panels/information/phononwidget.h
@@ -38,6 +38,7 @@
class EmbeddedVideoPlayer;
class QToolButton;
class QVBoxLayout;
+class QCheckBox;
class PhononWidget : public QWidget
{
@@ -81,6 +82,7 @@
QToolButton *m_playButton;
QToolButton *m_stopButton;
+ QCheckBox *m_playAut;
QVBoxLayout *m_topLayout;
Phonon::MediaObject *m_media;

+ 25
- 0
kde-servicemenus-cr2fits/PKGBUILD View File

@ -0,0 +1,25 @@
# Maintainer: Sabart Otto - Seberm <seberm[at]gmail[dot].com
pkgname=kde-servicemenus-cr2fits
pkgver=1
pkgrel=1
pkgdesc="Convert RAW images to FITS format (KDE5 Dolphin action)"
url=()
arch=('any')
license=('GPL')
install=''
source=(cr2fits.desktop
cr2fits.sh)
depends=('cr2fits' 'dolphin')
optdepends=()
conflicts=()
provides=''
makedepends=()
package() {
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
cp $srcdir/{ale_stack.desktop,ale_stack.sh} $pkgdir/usr/share/kservices5/ServiceMenus/
chmod 755 $pkgdir/usr/share/kservices5/ServiceMenus/*
}
md5sums=('bfbce728d7abea9b6446c932bf7f31e7'
'e4448d942b57641df540737ab2c1fec9')

+ 23
- 0
kde-servicemenus-dualiso/PKGBUILD View File

@ -0,0 +1,23 @@
# Maintainer: Sabart Otto - Seberm <seberm[at]gmail[dot].com
pkgname=kde-servicemenus-dualiso
pkgver=1
pkgrel=1
pkgdesc="Process Dual ISO RAW images (KDE5 Dolphin action)"
url=()
arch=('any')
license=('GPL')
install=''
source=(dualiso.desktop)
depends=('cr2hdr' 'dolphin')
optdepends=()
conflicts=()
#provides=''
makedepends=()
package() {
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
cp $srcdir/dualiso.desktop $pkgdir/usr/share/kservices5/ServiceMenus/
chmod 755 $pkgdir/usr/share/kservices5/ServiceMenus/dualiso.desktop
}
md5sums=('c2c579853f914d156656ac6981319833')

+ 14
- 0
kde-servicemenus-dualiso/dualiso.desktop View File

@ -0,0 +1,14 @@
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/x-canon-cr2;image/x-adobe-dng;
Icon=application-x-theme
Actions=dualiso;
X-KDE-StartupNotify=false
X-KDE-Priority=TopLevel
TryExec=cr2hdr
[Desktop Action dualiso]
Name=Convert Dual ISO RAW image
Icon=application-x-theme
Exec=mkdir -p converted-dual-iso && cr2hdr %U && mv *.DNG ./converted-dual-iso

+ 30
- 0
kde-servicemenus-hexstrings/PKGBUILD View File

@ -0,0 +1,30 @@
# Maintainer: Sabart Otto - Seberm <seberm[at]gmail[dot].com
pkgname=kde-servicemenus-hexstrings
pkgver=1
pkgrel=1
pkgdesc="Extract all readable strings from a file using Dolphin or Konqueror (KDE5 Dolphin action)"
url=()
arch=('any')
license=('BSD')
install=''
source=(hexstrings.patch)
depends=('binutils' 'dolphin')
optdepends=()
conflicts=()
#provides=''
makedepends=()
prepare() {
mkdir $pkgname-$pkgver
cd $srcdir/$pkgname-$pkgver
touch hexstrings.sh hexstrings.desktop
patch -Np1 -i "$srcdir/hexstrings.patch"
}
package() {
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
cp $srcdir/$pkgname-$pkgver/{hexstrings.desktop,hexstrings.sh} $pkgdir/usr/share/kservices5/ServiceMenus/
chmod 755 $pkgdir/usr/share/kservices5/ServiceMenus/{hexstrings.desktop,hexstrings.sh}
}
md5sums=('501cf2c12fa9c8e7f88012b9e6a77d21')

+ 32
- 0
kde-servicemenus-hexstrings/hexstrings.patch View File

@ -0,0 +1,32 @@
--- a/hexstrings.sh
+++ b/hexstrings.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+while [ $# -gt 0 ]; do
+ HEXFILE=$1
+ HEXFILE_STRINGS=$(echo "$HEXFILE" | sed 's/\.\w*$/_strings.txt/')
+ strings "$HEXFILE" | sort > "$HEXFILE_STRINGS" #Export strings from a hex file and sort them alphabetically.
+ shift
+done
--- a/hexstrings.desktop
+++ b/hexstrings.desktop
@@ -0,0 +1,17 @@
+[Desktop Action hexstrings]
+Exec=/usr/share/kservices5/ServiceMenus/hexstrings.sh
+Icon=text-x-script
+Name=Export readable strings from this file
+Name[fi]=Hae luettavissa olevat tekstit tästä tiedostosta
+
+[Desktop Entry]
+Actions=hexstrings;
+Icon=text-richtext
+MimeType=
+ServiceTypes=
+TryExec=strings
+Type=Service
+X-KDE-Priority=TopLevel
+X-KDE-ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
+X-KDE-StartupNotify=false
+X-KDE-Submenu=

+ 26
- 0
kde-servicemenus-mediainfo/107335-AudioVideoinfo-qt.desktop View File

@ -0,0 +1,26 @@
#installation
#copy this on $HOME/.kde/share/kde4/services
#
#license gpl
#author nowardevteam 2010
#version 0.3
[Desktop Entry]
Actions=mencoderMediainfo;mediainfo
Icon=dialog-information
ServiceTypes=KonqPopupMenu/Plugin,video/.*,audio/.*
Type=Service
X-KDE-Priority=TopLevel
[Desktop Action mediainfo]
Exec=kdialog --msgbox "$(ffmpeg -i %u 2>&1 |grep -E '(Duration)|(Stream)' )"
Icon=dialog-information
Name=info about the media
Name[it]=informazioni sul file multimediale
Name[ru]=Информация о медиафайле ffmpeg
[Desktop Action mencoderMediainfo]
Exec=kdialog --msgbox "$(mplayer -identify %u -ao null -vo null -frames 0 2>/dev/null | grep ^ID_ )"
Icon=dialog-information
Name=info about the media Mencoder
Name[it]=informazioni sul file Mencoder
Name[ru]=Информация о медиафайле mencoder

+ 27
- 0
kde-servicemenus-mediainfo/PKGBUILD View File

@ -0,0 +1,27 @@
pkgname=kde-servicemenus-mediainfo
pkgver=1
pkgrel=1
pkgdesc="A KDE service menus for media information (KDE5 Dolphin action)"
arch=('any')
url="https://store.kde.org/p/998430"
license=('GPL')
depends=('ffmpeg' 'dolphin' 'kdialog')
source=(https://dl.opendesktop.org/api/files/download/id/1460731765/107335-AudioVideoinfo-qt.desktop
program-cleanup.patch)
md5sums=('bf395c70ce7a6f69352ce21ab6cd168e'
'10c6e8c32362917b96e57247219af126')
prepare()
{
mkdir -p $srcdir/$pkgname
cp $srcdir/107335-AudioVideoinfo-qt.desktop $srcdir/$pkgname
cd $srcdir/$pkgname
patch -Np1 -i "$srcdir/program-cleanup.patch"
}
package()
{
mv $srcdir/$pkgname/107335-AudioVideoinfo-qt.desktop $srcdir/$pkgname/mediainfo-qt.desktop
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
install -m 644 $srcdir/$pkgname/*.desktop $pkgdir/usr/share/kservices5/ServiceMenus/
}

+ 32
- 0
kde-servicemenus-mediainfo/program-cleanup.patch View File

@ -0,0 +1,32 @@
--- a/107335-AudioVideoinfo-qt.desktop
+++ b/107335-AudioVideoinfo-qt.desktop
@@ -1,26 +1,12 @@
-#installation
-#copy this on $HOME/.kde/share/kde4/services
-#
-#license gpl
-#author nowardevteam 2010
-#version 0.3
[Desktop Entry]
-Actions=mencoderMediainfo;mediainfo
+Actions=mediainfo;
Icon=dialog-information
ServiceTypes=KonqPopupMenu/Plugin,video/.*,audio/.*
+MimeType=audio/*;video/*;
Type=Service
X-KDE-Priority=TopLevel
[Desktop Action mediainfo]
Exec=kdialog --msgbox "$(ffmpeg -i %u 2>&1 |grep -E '(Duration)|(Stream)' )"
Icon=dialog-information
-Name=info about the media
-Name[it]=informazioni sul file multimediale
-Name[ru]=Информация о медиафайле ffmpeg
-
-[Desktop Action mencoderMediainfo]
-Exec=kdialog --msgbox "$(mplayer -identify %u -ao null -vo null -frames 0 2>/dev/null | grep ^ID_ )"
-Icon=dialog-information
-Name=info about the media Mencoder
-Name[it]=informazioni sul file Mencoder
-Name[ru]=Информация о медиафайле mencoder
+Name=Media information

+ 20
- 0
kde-servicemenus-multimediatools/PKGBUILD View File

@ -0,0 +1,20 @@
pkgname=kde-servicemenus-multimediatools
pkgver=1
pkgrel=1
pkgdesc="A KDE service menus for media conversions (KDE5 Dolphin action)"
arch=('any')
url="https://store.kde.org/p/998464"
license=('GPL')
depends=('ffmpeg' 'dolphin' 'kdialog')
source=('ffmpeg-fileconversion-audio.sh'
'ffmpeg-fileconversion-video.sh'
'ffmpeg-fileconversion.desktop')
md5sums=('badf342f35cf21f15131859b49dd9308'
'ab997eca4ca58a8b398b352019a45d18'
'045a6657a8e83e1e1a909f6d0f2f8cb0')
package() {
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
cp $srcdir/{ffmpeg-fileconversion.desktop,ffmpeg-fileconversion-audio.sh,ffmpeg-fileconversion-video.sh} $pkgdir/usr/share/kservices5/ServiceMenus/
chmod 755 $pkgdir/usr/share/kservices5/ServiceMenus/{ffmpeg-fileconversion.desktop,ffmpeg-fileconversion-audio.sh,ffmpeg-fileconversion-video.sh}
}

+ 67
- 0
kde-servicemenus-multimediatools/ffmpeg-fileconversion-audio.sh View File

@ -0,0 +1,67 @@
#!/bin/bash
#input file format: flac, mp3, ogg, opus, f4a, m4a, wma, wav |||||| f4v, m4v, mp4, mpg, mpeg, vob, ts, m2v, ogv, mov, webm, flv, mkv, wmv, avi
#output file format: <exclude input file format>, <exclude flac>, mp3, ogg, opus, f4a, m4a, wma, wav
#--caption="Select Format" --icon=system-search disabled, since not supported by KDE5 kdialog
CHOICE=$(kdialog --icon=system-search --radiolist "Convert file(s) to" \
1 "aac (default)" on \
2 "ac3 (192 kbps)" off \
3 "mp3 (192 kbps)" off \
4 "ogg (192 kbps)" off \
5 "opus (default)" off \
6 "wav (default)" off \
7 "wma (192 kbps)" off \
);
if [ "$?" = 0 ]; then
if [ "$CHOICE" = 1 ]; then
OUTPUT_FILEFORMAT='aac'
OUTPUT_FILECODEC='aac'
EXTRA_PARAMS='-strict -2' #Required by acc codec
elif [ "$CHOICE" = 2 ]; then
OUTPUT_FILEFORMAT='ac3'
OUTPUT_FILECODEC='ac3'
EXTRA_PARAMS='-ab 192k' #Bitrate 192kbps
elif [ "$CHOICE" = 3 ]; then
OUTPUT_FILEFORMAT='mp3'
OUTPUT_FILECODEC='libmp3lame'
EXTRA_PARAMS='-ab 192k' #Bitrate 192kbps
elif [ "$CHOICE" = 4 ]; then
OUTPUT_FILEFORMAT='ogg'
OUTPUT_FILECODEC='libvorbis'
EXTRA_PARAMS='-ab 192k' #Bitrate 192kbps
elif [ "$CHOICE" = 5 ]; then
OUTPUT_FILEFORMAT='opus'
OUTPUT_FILECODEC='libopus'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 6 ]; then
OUTPUT_FILEFORMAT='wav'
OUTPUT_FILECODEC='adpcm_ima_wav'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 7 ]; then
OUTPUT_FILEFORMAT='wma'
OUTPUT_FILECODEC='wmav2'
EXTRA_PARAMS='-ab 192k' #Bitrate 192kbps
else
exit 1
fi
else
exit 1
fi
while [ $# -gt 0 ]; do
INPUT_FILE=$1
OUTPUT_FILE=$(echo "$INPUT_FILE" | sed "s/\.\w*$/.$OUTPUT_FILEFORMAT/")
ffmpeg -i "$INPUT_FILE" -vn -acodec $OUTPUT_FILECODEC $EXTRA_PARAMS -y "$OUTPUT_FILE"
shift
done
exit 0
###ffmpeg command parameters explained
#i = Input <file>
#vn = Disable video
#acodec = Used Audio Codec
#y = Overwrite output files

+ 92
- 0
kde-servicemenus-multimediatools/ffmpeg-fileconversion-video.sh View File

@ -0,0 +1,92 @@
#!/bin/bash
#input file format: flac, mp3, ogg, opus, f4a, m4a, wma, wav |||||| f4v, m4v, mp4, mpg, mpeg, vob, ts, m2v, ogv, mov, webm, flv, mkv, wmv, avi
#output file format: <exclude input file format>, <exclude flac>, mp3, ogg, opus, f4a, m4a, wma, wav
#--caption="Select Format" --icon=system-search disabled, since not supported by KDE5 kdialog
CHOICE=$(kdialog --radiolist "Convert file(s) to" \
1 "avi (192 kbps audio, 48000 Hz)" on \
2 "flv (copy audio codec)" off \
3 "m4v" off \
4 "mkv" off \
5 "mov (192 kpbs audio)" off \
6 "mp4" off \
7 "mpg (192 kpbs audio)" off \
8 "ogv" off \
9 "webm" off \
10 "wmv" off \
);
if [ "$?" = 0 ]; then
if [ "$CHOICE" = 1 ]; then
OUTPUT_FILEFORMAT='avi'
OUTPUT_FILECODEC_VIDEO='mpeg4'
OUTPUT_FILECODEC_AUDIO='ac3'
EXTRA_PARAMS='-ar 48000 -ab 192k'
elif [ "$CHOICE" = 2 ]; then
OUTPUT_FILEFORMAT='flv'
OUTPUT_FILECODEC_VIDEO='libx264'
OUTPUT_FILECODEC_AUDIO='copy'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 3 ]; then
OUTPUT_FILEFORMAT='m4v'
OUTPUT_FILECODEC_VIDEO='mpeg4'
OUTPUT_FILECODEC_AUDIO='aac'
EXTRA_PARAMS='-strict -2' #Required by acc codec
elif [ "$CHOICE" = 4 ]; then
OUTPUT_FILEFORMAT='mkv'
OUTPUT_FILECODEC_VIDEO='ffv1'
OUTPUT_FILECODEC_AUDIO='pcm_s16le'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 5 ]; then
OUTPUT_FILEFORMAT='mov'
OUTPUT_FILECODEC_VIDEO='prores'
OUTPUT_FILECODEC_AUDIO='libmp3lame'
EXTRA_PARAMS='-ab 192k'
elif [ "$CHOICE" = 6 ]; then
OUTPUT_FILEFORMAT='mp4'
OUTPUT_FILECODEC_VIDEO='libx264'
OUTPUT_FILECODEC_AUDIO='aac'
EXTRA_PARAMS='-strict -2' #Required by acc codec
elif [ "$CHOICE" = 7 ]; then
OUTPUT_FILEFORMAT='mpg'
OUTPUT_FILECODEC_VIDEO='mpeg2video'
OUTPUT_FILECODEC_AUDIO='libmp3lame'
EXTRA_PARAMS='-ab 192k'
elif [ "$CHOICE" = 8 ]; then
OUTPUT_FILEFORMAT='ogv'
OUTPUT_FILECODEC_VIDEO='libtheora'
OUTPUT_FILECODEC_AUDIO='libvorbis'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 9 ]; then
OUTPUT_FILEFORMAT='webm'
OUTPUT_FILECODEC_VIDEO='libvpx'
OUTPUT_FILECODEC_AUDIO='libvorbis'
EXTRA_PARAMS=''
elif [ "$CHOICE" = 10 ]; then
OUTPUT_FILEFORMAT='wmv'
OUTPUT_FILECODEC_VIDEO='msmpeg4'
OUTPUT_FILECODEC_AUDIO='wmav2'
EXTRA_PARAMS=''
else
exit 1
fi
else
exit 1
fi
while [ $# -gt 0 ]; do
INPUT_FILE=$1
OUTPUT_FILE=$(echo "$INPUT_FILE" | sed "s/\.\w*$/.$OUTPUT_FILEFORMAT/")
ffmpeg -i "$INPUT_FILE" -acodec $OUTPUT_FILECODEC_AUDIO -vcodec $OUTPUT_FILECODEC_VIDEO $EXTRA_PARAMS -y "$OUTPUT_FILE"
shift
done
exit 0
###ffmpeg command parameters explained
#i = Input <file>
#vn = Disable video
#acodec = Used Audio Codec
#y = Overwrite output files

+ 22
- 0
kde-servicemenus-multimediatools/ffmpeg-fileconversion.desktop View File

@ -0,0 +1,22 @@
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,video/.*,audio/.*
Icon=application-x-theme
MimeType=audio/*;video/*;
Actions=ffmpeg_fileconversion_audio;ffmpeg_fileconversion_video;
X-KDE-StartupNotify=false
X-KDE-Priority=TopLevel
TryExec=ffmpeg
[Desktop Action ffmpeg_fileconversion_audio]
Name=Convert to [audio format]
Icon=application-x-theme
Exec=/usr/share/kservices5/ServiceMenus/ffmpeg-fileconversion-audio.sh
[Desktop Action ffmpeg_fileconversion_video]
Name=Convert to [video format]
Icon=application-x-theme
Exec=/usr/share/kservices5/ServiceMenus/ffmpeg-fileconversion-video.sh
#TODO: Lisää <leikkaa valittu mediatiedosto> <<alkaen>> <<päättyen>>

+ 73
- 0
kde-servicemenus-multimediatools/ffmpeg-filelengthcut.sh View File

@ -0,0 +1,73 @@
#!/bin/bash
#<get_videofile_length>
#ffmpeg -- get mediafile length
#ffmpeg -- get start time
#ffmpeg -- get end time
#end time =
###GET FILE LENGTH
DURATION_FORMATTED='-sexagesimal'
DURATION_LENGTH=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $DURATION_FORMATTED)
DURATION=$($DURATION_LENGTH $INPUT_FILE)
##PRINT FILE LENGTH
implement to kdialog
kdialog --msgbox "$(ffmpeg -i %u 2>&1 |grep -E '(Duration)|(Stream)' )"
echo -e $DURATION #Show media file duration in hours:minutes:seconds.microseconds
$DURATION_FORMATTED=''
echo -e $DURATION #Show media file duration in seconds
#USER INPUT - DESIRED CUT (IN SECONDS)
$START_TIME=<desired media start time in seconds (set 0 to default value)>
$END_TIME=<desired media end time in seconds (get video end time and use it as default value)>
$INPUT_FILEFORMAT=<get input fileformat (suffix)>
+STRING=$(kdialog --icon=system-search --caption='Search string' --inputbox='Enter String to Search' 2> /dev/null)
+
+if [ "$?" != "0" ]; then
+ exit 1
+fi
#0:03:14.921000
#tunti :: minuutti :: sekunti :: millisekunti
#outputtaa näin:
#if 0 hours, dont show the field if <value number before the first : is zero, replace with '' with sed>
#if 0 minutes, don't show the field if <value number between the first and the second : is zero, replace with '' with sed>
#if 0 seconds, don't show the field if <value number between the second : and the third . is zero, replace with '' with sed>
#if 0 milliseconds, don't show the field if <value number between the third and the fourth : is zero, replace with '' with sed>
#but final output can now be like
#and >>> final output
#ffmpeg -i <mediafile> -ss <start_time> -to <end_time> <mediafile_cut (get original format)>
while [ $# -gt 0 ]; do
INPUT_FILE=$1
OUTPUT_FILE=$(echo "$INPUT_FILE" | sed "s/\.\w*$/_cut.$INPUT_FILEFORMAT/")
ffmpeg -i "$INPUT_FILE" -ss $START_TIME -to $END_TIME -y "$OUTPUT_FILE"
shift
done
exit 0

+ 30
- 0
kde-servicemenus-unlockpdf/PKGBUILD View File

@ -0,0 +1,30 @@
# Maintainer: Sabart Otto - Seberm <seberm[at]gmail[dot].com
pkgname=kde-servicemenus-unlockpdf
pkgver=1
pkgrel=1
pkgdesc="Unlock PDF files using Dolphin or Konqueror (KDE5 Dolphin action)"
url=()
arch=('any')
license=('BSD')
install=''
source=(pdfunlock.patch)
depends=('ghostscript' 'dolphin')
optdepends=()
conflicts=()
#provides=''
makedepends=()
prepare() {
mkdir $pkgname-$pkgver
cd $srcdir/$pkgname-$pkgver
touch pdfunlock.sh pdfunlock.desktop
patch -Np1 -i "$srcdir/pdfunlock.patch"
}
package() {
mkdir -p $pkgdir/usr/share/kservices5/ServiceMenus/
cp $srcdir/$pkgname-$pkgver/{pdfunlock.desktop,pdfunlock.sh} $pkgdir/usr/share/kservices5/ServiceMenus/
chmod 755 $pkgdir/usr/share/kservices5/ServiceMenus/{pdfunlock.desktop,pdfunlock.sh}
}
md5sums=('a1880f1e3b2f0d4b8f90c34a2ea09cef')

+ 31
- 0
kde-servicemenus-unlockpdf/pdfunlock.patch View File

@ -0,0 +1,31 @@
--- a/pdfunlock.sh
+++ b/pdfunlock.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+while [ $# -gt 0 ]; do
+ ENCRYP=$1
+ DECRYP=$(echo "$ENCRYP" | sed 's/\.\w*$/_unlocked.pdf/')
+ #qpdf --decrypt "$ENCRYP" "$DECRYP"
+ gs -sPDFPassword=$PASS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%stdout% -c .setpdfwrite -f "$ENCRYP" > "$DECRYP"
+ shift
+done
\ No newline at end of file
--- a/pdfunlock.desktop
+++ b/pdfunlock.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Type=Service
+ServiceTypes=KonqPopupMenu/Plugin
+MimeType=application/pdf
+Icon=application-pdf
+Actions=pdfunlock;
+X-KDE-StartupNotify=false
+X-KDE-Priority=TopLevel
+TryExec=gs
+
+[Desktop Action pdfunlock]
+Name=Unlock this PDF file
+Name[fi]=Poista PDF-tiedoston suojaukset
+Icon=application-pdf
+Exec=/usr/share/kservices5/ServiceMenus/pdfunlock.sh

+ 17
- 0
mlv2dng/PKGBUILD View File

@ -0,0 +1,17 @@
pkgname=mlv2dng
pkgver=2013.09.02
pkgrel=1
pkgdesc="Magic Lantern Raw file conversion tool."
arch=('any')
url='https://www.bitbucket.org/gnarr/mlv2dng'
license="GPL"
depends=()
makedepends=('wget')
source=(https://dl.dropboxusercontent.com/u/3181048/mlv2dng_linux.zip)
md5sums=('8722547d51a3fe81ae38a3bf3da9c6dc')
package()
{
mkdir -p "$pkgdir/usr/bin"
install -m755 $srcdir/mlv2dng "$pkgdir/usr/bin"
}

+ 19
- 0
mlvdump/PKGBUILD View File

@ -0,0 +1,19 @@
pkgname=mlvdump
pkgver=2016.03.24
pkgrel=1
pkgdesc="Magic Lantern Raw file conversion tool."
arch=('any')
url='http://www.magiclantern.fm/modules/modules/mlv_dump.zip/'
license="GPL"
depends=()
makedepends=('wget')
source=(http://www.magiclantern.fm/modules/modules/mlv_dump.zip/mlv_dump.zip)
md5sums=('197ec9d2d66df8e5820fe4afc9f93301')
package()
{
mkdir -p "$pkgdir/usr/bin"
#cp $srcdir/mlv_dump.linux "$pkgdir/usr/bin/mlvdump"
#chmod 755 "$pkgdir/usr/bin/mlvdump"
install -m755 $srcdir/mlv_dump.linux "$pkgdir/usr/bin/mlvdump" #Filesize differs!!!
}

+ 16
- 0
pano2vr/.AURINFO View File

@ -0,0 +1,16 @@
pkgbase = pano2vr
pkgdesc = Converts panoramic images into QuickTime VR or Macromedia Flash formats.
pkgver = 4.5.1
pkgrel = 1
url = http://gardengnomesoftware.com/pano2vr.php
arch = x86_64
license = Pano2VR
depends = libgl
depends = qt4
depends = qtwebkit
source = http://gardengnomesoftware.com/download/pano2vr/pano2vr_linux64_4_5_1.tar.gz
source = changedir.patch
source = pano2vr.desktop
pkgname = pano2vr

+ 38
- 0
pano2vr/PKGBUILD View File

@ -0,0 +1,38 @@
# Contributor: Ismael Barros (RazZziel) <razielmine@gmail.com>
# Maintainer: Luigi Ranghetti <ggranga@gmail.com>
pkgname=pano2vr
pkgver=4.5.2
_pkgver2=`echo $pkgver | tr '.' '_'`
pkgrel=1
pkgdesc="Converts panoramic images into QuickTime VR or Macromedia Flash formats."
url="http://gardengnomesoftware.com/pano2vr.php"
license=('Pano2VR')
arch=(x86_64)
depends=('libgl' 'qt4' 'qtwebkit')
source=(http://gardengnomesoftware.com/download/${pkgname}/${pkgname}_linux64_${_pkgver2}.tar.gz
'changedir.patch'
'pano2vr.desktop')
md5sums=('09f6bd0157f07c9ea41edf86b00066df'
'0fd71d2d76982a5146dd23fce94ec942'
'55617407038824cbc0fbeb01bff2ea0c')
prepare() {
cd "$srcdir"
patch -p1 -i "$srcdir/changedir.patch"
}
package() {
install -d $pkgdir/opt/
cp -r $srcdir $pkgdir/opt/
mv $pkgdir/opt/src $pkgdir/opt/$pkgname
install -d $pkgdir/usr/local/bin/
ln -s $pkgdir/opt/$pkgname/$pkgname.sh $pkgdir/usr/local/bin/$pkgname
install -d $pkgdir/usr/share/licenses/common/Pano2VR/
install -m644 $srcdir/license.txt $pkgdir/usr/share/licenses/common/Pano2VR/
install -D -m644 $srcdir/${pkgname}_icon.png $pkgdir/usr/share/pixmaps/${pkgname}.png
install -D -m644 $srcdir/${pkgname}.desktop $pkgdir/usr/share/applications/${pkgname}.desktop
}

+ 11
- 0
pano2vr/changedir.patch View File

@ -0,0 +1,11 @@
--- a/pano2vr.sh 2014-07-28 11:27:33.911207314 +0200
+++ b/pano2vr.sh 2014-07-28 11:33:30.961219971 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
appname=pano2vr
-dirname="`dirname $0`"
+dirname="/opt/$appname"
unset QT_PLUGIN_PATH
export LD_LIBRARY_PATH="$dirname/qtlib"
"$dirname/bin/$appname" "$@"
\ No newline at end of file

+ 8
- 0
pano2vr/pano2vr.desktop View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=pano2vr
Comment=Converts panoramic images into QuickTime VR or Macromedia Flash formats
Exec=pano2vr
Icon=pano2vr.png
Terminal=0
Type=Application
Categories=Graphics;

+ 29
- 0
panotour/PKGBUILD View File

@ -0,0 +1,29 @@
# Contributor: Fincer <fincer89 at hotmail dot com>
pkgname=panotour
pkgver=2.5.7
_pkgver=257_2017_02_23
_pkgname=Panotour
pkgrel=1
pkgdesc='Create quality virtual tours (trial version).'
arch=('x86_64')
url='http://kolor.com/'
license=('custom: "commercial"')
depends=("qt4>=4")
install=$pkgname.install
source=("Panotour_Linux64_$_pkgver.tar.gz::http://download.kolor.com/pt/stable/linux64tar"
"$pkgname" "$pkgname.desktop" "$pkgname.png")
md5sums=('c193b0b44bb6fa5628e7411b93d258a7'
'451d82df36b338942989a89125e5c51d'
'042e7af9eed7f0c58783b330e26cea0d'
'd6447677a8040c96465b58f27de972aa')
package(){
cd "$srcdir/$_pkgname" || return 1
install -dm755 $pkgdir/opt/$pkgname || return 1
tar -c ./ | tar -x -C $pkgdir/opt/$pkgname || return 1
install -Dm755 $srcdir/$pkgname $pkgdir/usr/bin/$pkgname || return 1
install -Dm644 "$srcdir/$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
install -Dm644 "$srcdir/$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
}

+ 4
- 0
panotour/panotour View File

@ -0,0 +1,4 @@
#!/bin/bash
cd /opt/panotour
./Panotour.sh $@

+ 10
- 0
panotour/panotour.desktop View File

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Name=Kolor Panotour
Comment=Create quality virtual tours
Exec=panotour
Icon=/usr/share/pixmaps/panotour.png
Terminal=false
Type=Application
Categories=Application;Graphics;
StartupNotify=true

+ 11
- 0
panotour/panotour.install View File

@ -0,0 +1,11 @@
post_install() {
update-desktop-database -q
}
post_upgrade() {
update-desktop-database -q
}
post_remove() {
update-desktop-database -q
}

BIN
panotour/panotour.png View File

Before After
Width: 128  |  Height: 128  |  Size: 4.3 KiB

BIN
panotour/panotour.tar.gz View File


+ 29
- 0
panotourpro/PKGBUILD View File

@ -0,0 +1,29 @@
# Contributor: Fincer <fincer89 at hotmail dot com>
pkgname=panotourpro
pkgver=2.5.7
_pkgver=257_2017_02_23
_pkgname=PanotourPro
pkgrel=1
pkgdesc='Create pro-quality virtual tours (trial version).'
arch=('x86_64')
url='http://kolor.com/'
license=('custom: "commercial"')
depends=('qt5-base')
install=$pkgname.install
source=("PanotourPro_Linux64_$_pkgver.tar.gz::http://download.kolor.com/ptp/stable/linux64tar"
"$pkgname" "$pkgname.desktop" "$pkgname.png")
md5sums=('30cbd64c7e88774ef45b1757cbad2ccc'
'2fb0de89c4749a8a50c7a8fe14555d98'
'361fb305589d79e1047f57c8809a6a30'
'38a6cdebc5175c97a5cd0a8cac4b1b11')
package(){
cd "$srcdir/$_pkgname" || return 1
install -dm755 $pkgdir/opt/$pkgname || return 1
tar -c ./ | tar -x -C $pkgdir/opt/$pkgname || return 1
install -Dm755 $srcdir/$pkgname $pkgdir/usr/bin/$pkgname || return 1
install -Dm644 "$srcdir/$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
install -Dm644 "$srcdir/$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
}

+ 4
- 0
panotourpro/panotourpro View File

@ -0,0 +1,4 @@
#!/bin/bash
cd /opt/panotourpro
./PanotourPro.sh $@

+ 11
- 0
panotourpro/panotourpro.desktop View File

@ -0,0 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Name=Kolor Panotour Pro
Comment=Create pro-quality virtual tours
Exec=panotourpro
Icon=/usr/share/pixmaps/panotourpro.png
Terminal=false
Type=Application
Categories=Application;Graphics;
StartupNotify=true
Name[en_US]=Kolor Panotour Pro

+ 11
- 0
panotourpro/panotourpro.install View File

@ -0,0 +1,11 @@
post_install() {
update-desktop-database -q
}
post_upgrade() {
update-desktop-database -q
}
post_remove() {
update-desktop-database -q
}

BIN
panotourpro/panotourpro.png View File

Before After
Width: 512  |  Height: 512  |  Size: 15 KiB

+ 33
- 0
photoscan-pro/PKGBUILD View File

@ -0,0 +1,33 @@
# Maintainer: Fincer <fincer89 at hotmail dot com>
pkgname=photoscan-pro
pkgver=1.3.0
ver=1_3_0
pkgrel=1
pkgdesc='Generate high resolution georeferenced orthophotos and textured polygonal models (trial version).'
arch=('x86_64')
url='http://www.agisoft.com/'
license=('custom: "commercial"')
depends=('libpng12' 'qt5-svg' 'qt5-base' 'python')
install=photoscan-pro.install
architecture=_amd64
source=("http://download.agisoft.com/photoscan-pro_$ver$_$architecture.tar.gz" "$pkgname.runtime" "$pkgname.png" "$pkgname.desktop"
qtfix.patch)
md5sums=('82aaed64f623dc91d6129014412c8c7a'
'2f29afffc98fa39ae0f5c47fe7195833'
'9ffa07f3059edce837d43de8c2a50e1b'
'72403a878fd2f555ce5d3bef507740e6'
'4cb2792c78ac526aaf1fa5c233a74fb0')
prepare(){
cd "$srcdir/$pkgname"
patch -Np1 -i $srcdir/qtfix.patch #qtfix126.patch is for Photoscan Pro version 1.2.6 (Linux AMD64)
}
package(){
install -dm755 $pkgdir/opt/
cp -r $srcdir/$pkgname $pkgdir/opt/$pkgname
install -Dm755 $srcdir/$pkgname.runtime $pkgdir/usr/bin/photoscanpro
install -Dm644 "$srcdir/$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
install -Dm644 "$srcdir/$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
chmod 755 -R $pkgdir/opt/$pkgname
}

+ 10
- 0
photoscan-pro/photoscan-pro.desktop View File

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Name=Agisoft PhotoScan Pro
Comment=Generate high resolution georeferenced orthophotos and textured polygonal models
Exec=photoscanpro
Icon=/usr/share/pixmaps/photoscan-pro.png
Terminal=false
Type=Application
Categories=Application;Graphics;
Name[en_US]=Agisoft PhotoScan Pro

+ 11
- 0
photoscan-pro/photoscan-pro.install View File

@ -0,0 +1,11 @@
post_install() {
update-desktop-database -q
}
post_upgrade() {
update-desktop-database -q
}
post_remove() {
update-desktop-database -q
}

BIN
photoscan-pro/photoscan-pro.png View File

Before After
Width: 48  |  Height: 48  |  Size: 2.3 KiB

+ 4
- 0
photoscan-pro/photoscan-pro.runtime View File

@ -0,0 +1,4 @@
#!/bin/bash
cd /opt/photoscan-pro/
./photoscan.sh $@

+ 11
- 0
photoscan-pro/qtfix.patch View File

@ -0,0 +1,11 @@
--- a/photoscan.sh
+++ b/photoscan.sh
@@ -7,7 +7,7 @@
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
-
+unset QT_PLUGIN_PATH
TCL_LIBRARY=$dirname/python/lib/tcl8.5
TK_LIBRARY=$dirname/python/lib/tk8.5
export TCL_LIBRARY

+ 10
- 0
photoscan-pro/qtfix126.patch View File

@ -0,0 +1,10 @@
--- a/photoscan.sh
+++ b/photoscan.sh
@@ -7,6 +7,7 @@
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
+unset QT_PLUGIN_PATH
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
"$dirname/$appname" "$@"

+ 26
- 0
photoscan/PKGBUILD View File

@ -0,0 +1,26 @@
# Maintainer: Fincer <fincer89 at hotmail dot com>
pkgname=photoscan
pkgver=1.3.0
ver=1_3_0
pkgrel=1
pkgdesc='Build professional quality textured 3D models from still images (trial version).'
arch=('x86_64')
url='http://www.agisoft.com/'
license=('custom: "commercial"')
depends=("libpng12")
install=photoscan.install
architecture=_amd64
source=("http://download.agisoft.com/photoscan_$ver$_$architecture.tar.gz" "$pkgname.runtime" "$pkgname.png" "$pkgname.desktop")
md5sums=('a6ee33a1500a5ea0faebc37798bba6cd'
'abb5083f4b13ed9ed57b2966b2cace35'
'9ffa07f3059edce837d43de8c2a50e1b'
'22918632e8683049cd06e6d70b7e2ff8')
package(){
cd "$srcdir/$_pkgname"
install -dm755 $pkgdir/opt/
cp -r $srcdir/$pkgname $pkgdir/opt/$pkgname
install -Dm755 $srcdir/$pkgname.runtime $pkgdir/usr/bin/photoscan
install -Dm644 "$srcdir/$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
install -Dm644 "$srcdir/$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
}

+ 10
- 0
photoscan/photoscan.desktop View File

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Name=Agisoft PhotoScan Standard
Comment=Build professional quality textured 3D models from still images
Exec=photoscan
Icon=/usr/share/pixmaps/photoscan.png
Terminal=false
Type=Application
Categories=Application;Graphics;
Name[en_US]=Agisoft PhotoScan Standard

+ 11
- 0
photoscan/photoscan.install View File

@ -0,0 +1,11 @@
post_install() {
update-desktop-database -q
}
post_upgrade() {
update-desktop-database -q
}
post_remove() {
update-desktop-database -q
}

BIN
photoscan/photoscan.png View File

Before After
Width: 48  |  Height: 48  |  Size: 2.3 KiB

+ 4
- 0
photoscan/photoscan.runtime View File

@ -0,0 +1,4 @@
#!/bin/bash
cd /opt/photoscan/
./photoscan.sh $@

+ 43
- 0
playonlinux/0001-remove-menuitems.patch View File

@ -0,0 +1,43 @@
--- a/python/mainwindow.py
+++ b/python/mainwindow.py
@@ -239,11 +239,11 @@
self.Bind(wx.EVT_MENU, self.Options, prefItem)
### File menu
- self.filemenu.Append(wx.ID_OPEN, _("Run"))
- self.filemenu.Append(wx.ID_ADD, _("Install"))
- self.filemenu.Append(wx.ID_DELETE, _("Remove"))
- self.filemenu.AppendSeparator()
- self.filemenu.Append(216, _("Donate"))
+ #self.filemenu.Append(wx.ID_OPEN, _("Run"))
+ #self.filemenu.Append(wx.ID_ADD, _("Install"))
+ #self.filemenu.Append(wx.ID_DELETE, _("Remove"))
+ #self.filemenu.AppendSeparator()
+ #self.filemenu.Append(216, _("Donate"))
self.filemenu.Append(wx.ID_EXIT, _("Exit"))
### Display menu
@@ -286,7 +286,7 @@
self.optionmenu.Append(221, _("Internet"))
self.optionmenu.Append(212, _("File associations"))
- self.optionmenu.Append(214, _("Plugin manager"))
+ #self.optionmenu.Append(214, _("Plugin manager"))
self.supportmenu = wx.Menu()
@@ -295,10 +295,10 @@
self.supportmenu.Append(402, _("Documentation"))
self.supportmenu.Append(403, _("Forums"))
self.supportmenu.Append(404, _("Bugs"))
- self.supportmenu.AppendSeparator()
- self.supportmenu.Append(405, _("Twitter"))
- self.supportmenu.Append(406, _("Google+"))
- self.supportmenu.Append(407, _("Facebook"))
+ #self.supportmenu.AppendSeparator()
+ #self.supportmenu.Append(405, _("Twitter"))
+ #self.supportmenu.Append(406, _("Google+"))
+ #self.supportmenu.Append(407, _("Facebook"))
self.help_menu = wx.Menu()

+ 185
- 0
playonlinux/0002-add-shortcutitems.patch View File

@ -0,0 +1,185 @@
--- /dev/null
+++ b/bash/winexec
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+allargs=("$@")
+
+fixpath=0
+for idx in "${!allargs[@]}"; do
+ arg="${allargs[$idx]}"
+
+ if [[ $fixpath -eq 0 ]]; then
+ # fix file paths only after the first executable is found in arg
+ if [[ "$arg" == *.exe ]]; then
+ fixpath=1
+ fi
+ if [[ "$arg" == *.EXE ]]; then
+ fixpath=1
+ fi
+ continue
+ elif [[ $fixpath -eq 1 ]]; then
+ # if arg starts with '/' and it's a path that exists on host
+ # precede the path with drive 'Z:'
+ if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
+ allargs[$idx]="z:${arg//\//\\}"
+ fi
+ fi
+done
+
+exec env "${allargs[@]}"
--- /dev/null
+++ b/bash/remove_shortcut
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2011 Pâris Quentin
+
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# This script makes shortcut of programs
+
+[ "$PLAYONLINUX" = "" ] && exit 0
+source "$PLAYONLINUX/lib/sources"
+
+
+TITLE="$(eval_gettext '$APPLICATION_TITLE shortcut remover')"
+
+if [ "$1" ]; then
+ PACKAGE="$1"
+else
+ POL_SetupWindow_games "$(eval_gettext "Please choose a software to package")" "$TITLE"
+ PACKAGE="$APP_ANSWER"
+fi
+
+POL_SetupWindow_Init
+POL_SetupWindow_wait_next_signal "$(eval_gettext "Removing shortcut...")" "$TITLE"
+POL_Shortcut_RemoveDesktopShortcut "$PACKAGE"
+POL_SetupWindow_message "$(eval_gettext "The shortcut has been removed from $HOME.local/share/applications/ and your desktop")" "$TITLE"
+POL_SetupWindow_Close
+
+exit 0
--- a/python/mainwindow.py
+++ b/python/mainwindow.py
@@ -784,7 +784,9 @@
i+=1
self.menuGaucheAddLink("pol_prgm_configure", _("Configure"), i,Variables.playonlinux_env+"/resources/images/menu/run.png",self.Configure)
i+=1
- self.menuGaucheAddLink("pol_prgm_shortcut", _("Create a shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.Package)
+ self.menuGaucheAddLink("pol_prgm_shortcut", _("Create desktop shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.Package)
+ i+=1
+ self.menuGaucheAddLink("pol_prgm_shortcut_rem", _("Remove desktop shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.RemShortcut)
i+=1
self.menuGaucheAddLink("pol_prgm_adddir", _("Open the directory"), i,Variables.playonlinux_env+"/resources/images/menu/folder-wine.png",self.GoToAppDir)
@@ -980,6 +982,10 @@
def Package(self, event):
game_exec = self.GetSelectedProgram()
subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/make_shortcut", game_exec])
+
+ def RemShortcut(self, event):
+ game_exec = self.GetSelectedProgram()
+ subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/remove_shortcut", game_exec])
def UninstallGame(self, event):
game_exec = self.GetSelectedProgram()
--- a/lib/scripts.lib
+++ b/lib/scripts.lib
@@ -384,7 +384,7 @@
# Do nothing on Mac OS
if [ -n "$Categories" -a "$POL_OS" = "Linux" ] || [ -n "$Categories" -a "$POL_OS" = "BSD" ]; then
LOCALAPPS="$HOME/.local/share/applications"
- make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$LOCALAPPS" "$PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories" "playonlinux-"
+ make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$LOCALAPPS" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories" "playonlinux-"
fi
fi
@@ -394,7 +394,7 @@
if [ "$POL_OS" = "Mac" ]; then
POL_SetupWindow_AutoApp "$ICON_FILENAME"
else
- make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$DESKTOP" "$PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories"
+ make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$DESKTOP" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories"
fi
fi
fi
@@ -1039,13 +1039,33 @@
# http://stackoverflow.com/questions/8939580/bash-split-a-string-exactly-like-readline-would-split-it
eval set -- $(grep '^POL_Wine ' "$POL_USER_ROOT/shortcuts/$PACKAGE"|tail -n 1)
local binary="$2"
- make_desktop_shortcut "$iconPath" "$PACKAGE" "$DESKTOP" "$PLAYONLINUX/playonlinux --run \"$PACKAGE\"" "$binary" ""
+ LOCALAPPS="$HOME/.local/share/applications"
+ make_desktop_shortcut "$iconPath" "$PACKAGE" "$LOCALAPPS" "$DESKTOP" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$PACKAGE\"" "$binary" ""
+ ln -s "$PLACE/$PACKAGE.desktop" "$DESKTOP"
;;
*)
POL_Debug_Warning "POL_Shortcut_MakeDesktopShortcut: not supported OS: $POL_OS"
esac
}
+
+POL_Shortcut_RemoveDesktopShortcut()
+{
+ PACKAGE="$1"
+ if [ "$POL_OS" = "Mac" ]; then
+ if [ -f "$HOME/Desktop/$PACKAGE.app" ]; then
+ rm "$HOME/Desktop/$PACKAGE.app"
+ fi
+ fi
+ if [ "$POL_OS" = "Linux" ] || [ "$POL_OS" == "FreeBSD" ]; then
+ LOCALAPPS="$HOME/.local/share/applications"
+ if [ -f "$LOCALAPPS/$PACKAGE.desktop" ];then
+ rm "$DESKTOP/$PACKAGE.desktop"
+ rm "$LOCALAPPS/$PACKAGE.desktop"
+ fi
+ fi
+}
+
POL_System_is32bit()
{
# Check if the file (1) is a 32bit executable
--- a/lib/playonlinux.lib
+++ b/lib/playonlinux.lib
@@ -670,12 +670,12 @@
(echo "[Desktop Entry]"
echo "Encoding=UTF-8"
echo "Name=$ICON_NAME"
- echo "Comment=PlayOnLinux"
echo "Type=Application"
- echo "Exec=$EXECUTABLE %F"
+ echo "Exec=$EXECUTABLE"
echo "Icon=$ICON"
- echo "Name[fr_FR]=$ICON_NAME"
echo "StartupWMClass=$WMCLASS"
+ echo "StartupNotify=true"
+ echo "Comment="
echo "Categories=$CATEGORIES") > "${SHORT_NAME}.desktop"
chmod +x "${SHORT_NAME}.desktop"
}
--- a/bash/make_shortcut
+++ b/bash/make_shortcut
@@ -34,7 +34,7 @@
POL_SetupWindow_Init
POL_SetupWindow_wait_next_signal "$(eval_gettext "Creating shortcut...")" "$TITLE"
POL_Shortcut_MakeDesktopShortcut "$PACKAGE"
-POL_SetupWindow_message "$(eval_gettext "The shortcut has been placed on your desktop")" "$TITLE"
+POL_SetupWindow_message "$(eval_gettext "The shortcut has been placed on $HOME.local/share/applications/ and linked to your desktop")" "$TITLE"
POL_SetupWindow_Close

+ 94
- 0
playonlinux/0003-add-addremoveprograms.patch View File

@ -0,0 +1,94 @@
--- a/lib/wine.lib
+++ b/lib/wine.lib
@@ -1101,6 +1101,7 @@
cname="$(POL_Wine_exename "$@")"
[ "$cname" = "winecfg" ] && cname="Configure wine"
[ "$cname" = "regedit" ] && cname="Registry Editor"
+ [ "$cname" = "uninstaller" ] && cname="Add/Remove Programs Menu"
[ "$cname" = "wineboot" ] && cname="Virtual drive creation"
echo "$cname"
}
--- a/python/mainwindow.py
+++ b/python/mainwindow.py
@@ -471,6 +471,7 @@
wx.EVT_TREE_ITEM_MENU(self, 105, self.RMBInGameList)
wx.EVT_MENU(self, 230, self.RWineConfigurator)
wx.EVT_MENU(self, 231, self.RRegistryEditor)
+ wx.EVT_MENU(self, 237, self.RWineUninstaller)
wx.EVT_MENU(self, 232, self.GoToAppDir)
wx.EVT_MENU(self, 233, self.ChangeIcon)
wx.EVT_MENU(self, 234, self.UninstallGame)
@@ -588,6 +589,10 @@
self.RegistryEditor = wx.MenuItem(self.GameListPopUpMenu, 231, _("Registry Editor"))
self.RegistryEditor.SetBitmap(wx.Bitmap(Variables.playonlinux_env+"/resources/images/menu/regedit.png"))
self.GameListPopUpMenu.AppendItem(self.RegistryEditor)
+
+ self.WineUninstaller = wx.MenuItem(self.GameListPopUpMenu, 237, _("Add/Remove Programs Menu"))
+ self.WineUninstaller.SetBitmap(wx.Bitmap(Variables.playonlinux_env+"/resources/images/menu/wine-uninstaller.png"))
+ self.GameListPopUpMenu.AppendItem(self.WineUninstaller)
self.GotoAppDir = wx.MenuItem(self.GameListPopUpMenu, 232, _("Open the application's directory"))
self.GotoAppDir.SetBitmap(wx.Bitmap(Variables.playonlinux_env+"/resources/images/menu/folder-wine.png"))
@@ -628,6 +633,9 @@
def RRegistryEditor(self, event):
self.RConfigure("regedit")
+ def RWineUninstaller(self, event):
+ self.RConfigure("uninstaller")
+
def run_plugin(self, event):
game_exec = self.GetSelectedProgram()
plugin=self.plugin_list[event.GetId()-300]
@@ -796,7 +804,7 @@
self.menuGaucheAddLink("pol_prgm_readme", _("Read the manual"), i,Variables.playonlinux_env+"/resources/images/menu/manual.png",self.ReadMe)
i+=1
- self.menuGaucheAddLink("pol_prgm_uninstall", _("Uninstall"), i,Variables.playonlinux_env+"/resources/images/menu/window-close.png",self.UninstallGame)
+ self.menuGaucheAddLink("pol_prgm_uninstall", _("Remove"), i,Variables.playonlinux_env+"/resources/images/menu/window-close.png",self.UninstallGame)
self.linksfile = os.environ["POL_USER_ROOT"]+"/configurations/links/"+shortcut
--- a/bash/polconfigurator
+++ b/bash/polconfigurator
@@ -51,6 +51,14 @@
wineserver -k
POL_Wine regedit
}
+polconfigurator_uninstaller()
+{
+ POL_Wine_AutoSetVersionEnv
+ wineserver -k
+ export POL_IgnoreWineErrors=True
+ POL_Wine uninstaller
+ export POL_IgnoreWineErrors=False
+}
polconfigurator_wineboot()
{
POL_Wine_AutoSetVersionEnv
@@ -104,6 +112,7 @@
{
local LNG_CONFIGURE=$(eval_gettext "Configure Wine")
local LNG_REGISTRY=$(eval_gettext "Registry Editor")
+ local LNG_UNINSTALLER=$(eval_gettext "Add/Remove Programs Menu")
local LNG_KPROCESS=$(eval_gettext "Kill all prefix processes")
local LNG_UPDATEPREFIX=$(eval_gettext "Update wineprefix")
local LNG_WINDOWS_REBOOT=$(eval_gettext "Simulate Windows reboot")
@@ -114,7 +123,7 @@
local LNG_WINETRICKS=$(eval_gettext "Use WineTricks")
# ~$LNG_UPDATEPREFIX
- local ITEMS="$LNG_CONFIGURE~$LNG_REGISTRY~$LNG_KPROCESS~$LNG_WINDOWS_REBOOT~$LNG_CHANGEICON"
+ local ITEMS="$LNG_CONFIGURE~$LNG_REGISTRY~$LNG_UNINSTALLER~$LNG_KPROCESS~$LNG_WINDOWS_REBOOT~$LNG_CHANGEICON"
if [ -e "$POL_USER_ROOT/plugins/Advanced Wine Configuration" ]
then
ITEMS+="~$LNG_APLUGIN"
@@ -134,6 +143,7 @@
POL_SetupWindow_menu "$(eval_gettext "Please choose an action to perform")" "$TITLE" "$ITEMS" "~"
[ "$APP_ANSWER" = "$LNG_CONFIGURE" ] && funct=winecfg
[ "$APP_ANSWER" = "$LNG_REGISTRY" ] && funct=regedit
+ [ "$APP_ANSWER" = "$LNG_UNINSTALLER" ] && funct=uninstaller
[ "$APP_ANSWER" = "$LNG_KPROCESS" ] && funct=kprocess
# [ "$APP_ANSWER" = "$LNG_UPDATEPREFIX" ] && funct="??"
[ "$APP_ANSWER" = "$LNG_WINDOWS_REBOOT" ] && funct=wineboot

+ 46
- 0
playonlinux/0004-change-wineversions.patch View File

@ -0,0 +1,46 @@
--- a/python/wine_versions.py
+++ b/python/wine_versions.py
@@ -356,6 +356,18 @@
if(arch == "amd64"):
self.download64.thread_message = "get"
+ def checkVersionUse(self, arch): # Check the wine version use by wineprefix
+ used_versions = []
+ file_to_check = os.listdir(Variables.playonlinux_rep+"/wineprefix/") # List of wineprefix
+ file_to_check.remove('default') # Remove 'default' (no wine version use by it)
+ for i in range(len(file_to_check)):
+ tmp = open(Variables.playonlinux_rep+"/wineprefix/"+file_to_check[i]+"/playonlinux.cfg","r")
+ if "ARCH="+arch in tmp.readline(): # Check if the wineprefix use a wine arch equal to 'arch'
+ line = tmp.readline().split("\n")[0] # Remove the '\n'
+ if "VERSION=" in line and line.split("=")[1] not in used_versions: # Fix wine system problem (no VERSION= if system is used)
+ used_versions.append(line.split("=")[1]) # Keep de wine version only
+ tmp.close()
+ return(used_versions)
def WriteVersion(self, arch="x86"):
self.onglets.imagesapps[arch].RemoveAll()
@@ -378,6 +390,8 @@
root2 = self.onglets.list_ver_installed[arch].AddRoot("")
wfolder = os_pref+"-"+arch
+
+ used_version = self.checkVersionUse(arch) # Get the list of wine version used by wineprefix
installed_versions = os.listdir(Variables.playonlinux_rep+"/wine/"+wfolder)
installed_versions.sort(key=keynat)
@@ -386,11 +400,14 @@
self.j = 0
while(self.i < len(installed_versions)):
if(os.path.isdir(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+installed_versions[self.i])):
+ itemId = self.onglets.list_ver_installed[arch].AppendItem(root2,installed_versions[self.i],self.j)
if(len(os.listdir(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+installed_versions[self.i])) == 0):
self.onglets.imagesapps_i[arch].Add(wx.Bitmap(Variables.playonlinux_env+"/etc/install/wine-warning.png"))
+ elif installed_versions[self.i] not in used_version: # Clearly shows the unused wine version
+ self.onglets.imagesapps_i[arch].Add(wx.Bitmap(Variables.playonlinux_env+"/etc/install/wine-unused.png"))
+ self.onglets.list_ver_installed[arch].SetItemTextColour(itemId, (191,191,191))
else:
self.onglets.imagesapps_i[arch].Add(wx.Bitmap(Variables.playonlinux_env+"/etc/install/wine.png"))
- self.onglets.list_ver_installed[arch].AppendItem(root2,installed_versions[self.i],self.j)
self.j += 1
self.i += 1
try :

+ 68
- 0
playonlinux/0005-add-optimussupport.patch View File

@ -0,0 +1,68 @@
--- a/python/configure.py
+++ b/python/configure.py
@@ -361,6 +361,12 @@
else:
subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/POL_Command", "--prefix", self.s_prefix.encode('utf-8','replace'), "POL_Wine_DirectInput", param, self.display_elements[param].GetValue().encode('utf-8','replace')])
+ def change_Optimus_settings(self, param):
+ if(self.s_isPrefix == False):
+ subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/POL_Command", self.s_title.encode('utf-8','replace'), "POL_Optimus_Support", param, self.display_elements[param].GetValue().encode('utf-8','replace')])
+ else:
+ subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/POL_Command", "--prefix", self.s_prefix.encode('utf-8','replace'), "POL_Optimus_Support", param, self.display_elements[param].GetValue().encode('utf-8','replace')])
+
def get_current_settings(self, param):
self.display_elements[param].SetValue(self.settings[param])
@@ -425,7 +431,7 @@
self.display_elements["pre_run_text"].Hide()
self.Refresh()
- self.elements = ["UseGLSL","DirectDrawRenderer","VideoMemorySize","OffscreenRenderingMode","RenderTargetModeLock","Multisampling","StrictDrawOrdering","MouseWarpOverride"]
+ self.elements = ["UseGLSL","DirectDrawRenderer","VideoMemorySize","OffscreenRenderingMode","RenderTargetModeLock","Multisampling","StrictDrawOrdering","OptimusSupport","MouseWarpOverride"]
self.settings = wine.LoadRegValues(self.s_prefix,self.elements)
#print self.settings
self.get_current_settings("UseGLSL")
@@ -435,6 +441,7 @@
self.get_current_settings("RenderTargetModeLock")
self.get_current_settings("Multisampling")
self.get_current_settings("StrictDrawOrdering")
+ self.get_current_settings("OptimusSupport")
self.get_current_settings("MouseWarpOverride")
self.arch = playonlinux.GetSettings('ARCH',self.s_prefix)
@@ -465,6 +472,8 @@
self.change_Direct3D_settings("Multisampling")
if(param == 307):
self.change_Direct3D_settings("StrictDrawOrdering")
+ if(param == 308):
+ self.change_Direct3D_settings("OptimusSupport")
if(param == 401):
self.change_DirectInput_settings("MouseWarpOverride")
@@ -569,7 +578,7 @@
self.AddDisplayElement(_("Render target mode lock"),"RenderTargetModeLock",["disabeld","readdraw","readtex"],["disabled","readdraw","readtex"],5)
self.AddDisplayElement(_("Multisampling"),"Multisampling",["Enabled","Disabled"],["enabled","disabled"],6)
self.AddDisplayElement(_("Strict Draw Ordering"),"StrictDrawOrdering",["enabled","disabled"],["enabled","disabled"],7)
-
+ self.AddDisplayElement(_("Optimus Support"),"OptimusSupport",["enabled","disabled"],["enabled","disabled"],8)
def Miscellaneous(self, nom):
self.misc_elements = {}
--- a/lib/wine.lib
+++ b/lib/wine.lib
@@ -543,6 +543,14 @@
return $errors
}
+POL_Optimus_Support ()
+{
+# POL_Wine_AutoSetVersionEnv
+# wineserver -k
+ "$(POL_Config_Write PRE_WINE 'optirun')"
+# wineserver -k
+}
+
POL_Wine_SelectPrefix()
{
# Select a wineprefix and remove unexpected chars

+ 27
- 0
playonlinux/0006-disable-updatenotification.patch View File

@ -0,0 +1,27 @@
--- a/python/mainwindow.py
+++ a/python/mainwindow.py
@@ -88,15 +88,15 @@
pass
self.updating = False
- if(playonlinux.VersionLower(os.environ["VERSION"],self.WebVersion)):
- self.sendToStatusBar(_('An updated version of {0} is available').format(os.environ["APPLICATION_TITLE"])+" ("+self.WebVersion+")",False)
- if(os.environ["DEBIAN_PACKAGE"] == "FALSE"):
- self.sendAlert(_('An updated version of {0} is available').format(os.environ["APPLICATION_TITLE"])+" ("+self.WebVersion+")")
- os.environ["POL_UPTODATE"] = "FALSE"
- else:
- self.Show = False
- self.perc = -1
- os.environ["POL_UPTODATE"] = "TRUE"
+# if(playonlinux.VersionLower(os.environ["VERSION"],self.WebVersion)):
+# self.sendToStatusBar(_('An updated version of {0} is available').format(os.environ["APPLICATION_TITLE"])+" ("+self.WebVersion+")",False)
+# if(os.environ["DEBIAN_PACKAGE"] == "FALSE"):
+# self.sendAlert(_('An updated version of {0} is available').format(os.environ["APPLICATION_TITLE"])+" ("+self.WebVersion+")")
+# os.environ["POL_UPTODATE"] = "FALSE"
+# else:
+# self.Show = False
+# self.perc = -1
+# os.environ["POL_UPTODATE"] = "TRUE"
self.wantcheck = False

+ 42
- 0
playonlinux/0007-disable-closingandwinemessage.patch View File

@ -0,0 +1,42 @@
--- a/python/mainwindow.py
+++ a/python/mainwindow.py
@@ -1098,19 +1098,21 @@
pid_exists = False
print "Registered PID: %d (%s)" % (pid, 'Present' if pid_exists else 'Missing')
self.registeredPid = pids
+ self._mgr.Destroy()
+ self.POLDie()
- if(playonlinux.GetSettings("DONT_ASK_BEFORE_CLOSING") == "TRUE" or self.registeredPid == [] or wx.YES == wx.MessageBox(_('Are you sure you want to close all {0} windows?').format(os.environ["APPLICATION_TITLE"]).decode("utf-8","replace"),os.environ["APPLICATION_TITLE"], style=wx.YES_NO | wx.ICON_QUESTION)):
- self.SizeToSave = self.GetSize();
- self.PositionToSave = self.GetPosition();
+# if(playonlinux.GetSettings("DONT_ASK_BEFORE_CLOSING") == "TRUE" or self.registeredPid == [] or wx.YES == wx.MessageBox(_('Are you sure you want to close all {0} windows?').format(os.environ["APPLICATION_TITLE"]).decode("utf-8","replace"),os.environ["APPLICATION_TITLE"], style=wx.YES_NO | wx.ICON_QUESTION)):
+# self.SizeToSave = self.GetSize();
+# self.PositionToSave = self.GetPosition();
# Save size and position
- playonlinux.SetSettings("MAINWINDOW_WIDTH",str(self.SizeToSave[0]))
- playonlinux.SetSettings("MAINWINDOW_HEIGHT",str(self.SizeToSave[1]-Variables.windows_add_playonmac*56))
- playonlinux.SetSettings("MAINWINDOW_X",str(self.PositionToSave[0]))
- playonlinux.SetSettings("MAINWINDOW_Y",str(self.PositionToSave[1]))
+# playonlinux.SetSettings("MAINWINDOW_WIDTH",str(self.SizeToSave[0]))
+# playonlinux.SetSettings("MAINWINDOW_HEIGHT",str(self.SizeToSave[1]-Variables.windows_add_playonmac*56))
+# playonlinux.SetSettings("MAINWINDOW_X",str(self.PositionToSave[0]))
+# playonlinux.SetSettings("MAINWINDOW_Y",str(self.PositionToSave[1]))
- self._mgr.Destroy()
+# self._mgr.Destroy()
- self.POLDie()
+# self.POLDie()
return None
def About(self, event):
@@ -1271,7 +1273,7 @@
self.singleCheck("gettext.sh", package="gettext") # gettext-base on Debian
self.singleCheck("icotool", package="icoutils")
self.singleCheck("wrestool", package="icoutils")
- self.singleCheck("wine", package="Wine")
+# self.singleCheck("wine", package="Wine")
self.singleCheck("unzip", package="InfoZIP")
self.singleCheck("7z", package="P7ZIP full") # p7zip-full on Debian
if(os.environ["POL_OS"] == "FreeBSD"):

+ 53
- 0
qgifer/0001_cmakelinkingfix.patch View File

@ -0,0 +1,53 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,12 +36,16 @@
ENDIF(WIN32)
FIND_PACKAGE( OpenCV REQUIRED core highgui imgproc )
-FIND_PACKAGE(Qt4 REQUIRED)
-FIND_PACKAGE(GIF REQUIRED)
+FIND_PACKAGE(Qt5Core REQUIRED)
+
+FIND_LIBRARY(GIF REQUIRED)
+#FIND_LIBRARY(GIF 4 EXACT REQUIRED HINTS /usr/lib/giflib4)
-INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
+FIND_PACKAGE(Qt5Widgets)
+INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS})
+
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -Wno-reorder -Wno-sign-compare" )
SET(WINDOWS_EXEC )
@@ -143,9 +147,9 @@
ui/interpolationdialog.ui
)
-QT4_WRAP_CPP(HEADERS_MOC ${QT_HEADERS})
-QT4_WRAP_UI(FORMS_HEADERS ${FORMS})
-QT4_ADD_RESOURCES(RESOURCES_RCC ${RESOURCES})
+qt5_wrap_cpp(HEADERS_MOC ${QT_HEADERS})
+qt5_wrap_ui(FORMS_HEADERS ${FORMS})
+qt5_add_resources(RESOURCES_RCC ${RESOURCES})
IF(WIN32)
SET( OPENCV_LIBS "-lopencv_core244 -lopencv_highgui244 -lopencv_imgproc244" )
@@ -154,6 +158,7 @@
ENDIF(WIN32)
SET( GIF_LIBS "-lgif" )
+#SET( GIF_LIBS /usr/lib/giflib4/libgif.so "-lgif" )
set(RES_FILES "")
if(MINGW)
@@ -165,7 +170,8 @@
endif(MINGW)
ADD_EXECUTABLE(${TARGET_NAME} ${WINDOWS_EXEC} ${SOURCES} ${HEADERS_MOC} ${FORMS_HEADERS} ${RESOURCES_RCC} ${RES_FILES})
-TARGET_LINK_LIBRARIES(${TARGET_NAME} ${QT_LIBRARIES} ${OPENCV_LIBS} ${GIF_LIBS})
+TARGET_LINK_LIBRARIES(${TARGET_NAME} ${OPENCV_LIBS} ${GIF_LIBS})
+TARGET_LINK_LIBRARIES(${TARGET_NAME} Qt5::Widgets)
IF(UNIX)
INSTALL(TARGETS ${TARGET_NAME} DESTINATION ${BIN_INSTALL_DIR})

+ 72
- 0
qgifer/0001_printgiferrorfix.patch.disabled View File

@ -0,0 +1,72 @@
--- a/src/gifcreator.cpp
+++ b/src/gifcreator.cpp
@@ -55,7 +55,7 @@
GifFileType *GifFile = EGifOpenFileName(filename, FALSE);
if (!GifFile){
- PrintGifError();
+ GifError();
return false;
}
@@ -63,7 +63,7 @@
GifFile,
w, h, colorRes, 0, cmaps.size() > 1 ? NULL : cmaps.at(0)
) == GIF_ERROR){
- PrintGifError();
+ GifError();
return false;
}
@@ -75,7 +75,7 @@
char nsle[12] = "NETSCAPE2.0";
char subblock[3];
if (EGifPutExtensionFirst(GifFile, APPLICATION_EXT_FUNC_CODE, 11, nsle) == GIF_ERROR) {
- PrintGifError();
+ GifError();
return false;
}
subblock[0] = 1;
@@ -83,7 +83,7 @@
subblock[1] = loop_count / 256;
if (EGifPutExtensionLast(GifFile, APPLICATION_EXT_FUNC_CODE, 3, subblock) == GIF_ERROR) {
- PrintGifError();
+ GifError();
return false;
}
@@ -113,7 +113,7 @@
GifFile,
0, 0, w, h, FALSE, cmaps.size() > ni ? cmaps.at(ni) : cmaps.at(cmaps.size()-1)
) == GIF_ERROR) {
- PrintGifError();
+ GifError();
endProgress();
return false;
}
@@ -121,7 +121,7 @@
for (int y = 0, j=(h-1)*w; y < h; y++, j-=w) {
if (EGifPutLine(GifFile, &(frames[ni][j]), w) == GIF_ERROR){
- PrintGifError();
+ GifError();
endProgress();
return false;
}
@@ -130,13 +130,13 @@
//comment
if(EGifPutComment(GifFile,"This GIF file was created using QGifer") == GIF_ERROR){
- PrintGifError();
+ GifError();
endProgress();
return false;
}
if (EGifCloseFile(GifFile) == GIF_ERROR) {
- PrintGifError();
+ GifError();
endProgress();
return false;
}

+ 38
- 0
qgifer/0001_removeframelimit_addcodecs.patch View File

@ -0,0 +1,38 @@
--- a/src/frameplayer.cpp
+++ b/src/frameplayer.cpp
@@ -55,7 +55,7 @@
qDebug() << "FramePlayer::openSource new video loaded: " << src;
#if defined(Q_WS_X11)
QString codec = codecName();
- raw = (codec == "MJPG" || codec == "I420" || codec == "YUV4");
+ raw = (codec == "MJPG" || codec == "I420" || codec == "YUV4" || codec == "YUV4" || codec == "LIBX264" || codec == "MPEG4" || codec == "MSMPEG4" || codec == "LIBVPX" || codec == "MPEG2VIDEO" || codec == "FFV1");
qDebug() << "codec name: " << codecName();
#endif
@@ -63,14 +63,6 @@
frames = vcap.get(CV_CAP_PROP_FRAME_COUNT);
qDebug() << "total frames: " << frames;
-#if defined(Q_WS_X11)
- if(frames > FRAME_LIMIT && !raw)
- {
- QMessageBox::critical(this, tr("Error"),tr("This file is coded with \"")+codec+tr("\" codec and contains more than ")+QString::number(FRAME_LIMIT)+tr(" frames. This codec is not supported for full-length videos yet, please cut your video or use other codec like motion JPEG or YUV4."));
- close();
- return false;
- }
-#endif
interval = estimateInterval();
if(!interval)
interval = 40;
--- a/src/frameplayer.h
+++ b/src/frameplayer.h
@@ -32,8 +32,6 @@
#include "workspace.h"
#include "ui_frameplayer.h"
-#define FRAME_LIMIT 1800
-
using namespace cv;
class FramePlayer : public QWidget, public Ui::FramePlayerForm

+ 157
- 0
qgifer/giflibport.patch View File

@ -0,0 +1,157 @@
Port qgifer to giflib 5 API.
See also: https://bugs.gentoo.org/show_bug.cgi?id=536634
--- a/src/gifcreator.cpp
+++ b/src/gifcreator.cpp
@@ -38,7 +38,7 @@
j--;
}
for(int i=0;i<cmaps.size();i++)
- FreeMapObject(cmaps[i]);
+ GifFreeMapObject(cmaps[i]);
}
@@ -52,7 +52,7 @@
}
- GifFileType *GifFile = EGifOpenFileName(filename, FALSE);
+ GifFileType *GifFile = EGifOpenFileName(filename, 0, NULL);
if (!GifFile){
PrintGifError();
@@ -74,7 +74,7 @@
{
char nsle[12] = "NETSCAPE2.0";
char subblock[3];
- if (EGifPutExtensionFirst(GifFile, APPLICATION_EXT_FUNC_CODE, 11, nsle) == GIF_ERROR) {
+ if (EGifPutExtension(GifFile, APPLICATION_EXT_FUNC_CODE, 11, nsle) == GIF_ERROR) {
PrintGifError();
return false;
}
@@ -82,7 +82,7 @@
subblock[2] = loop_count % 256;
subblock[1] = loop_count / 256;
- if (EGifPutExtensionLast(GifFile, APPLICATION_EXT_FUNC_CODE, 3, subblock) == GIF_ERROR) {
+ if (EGifPutExtension(GifFile, APPLICATION_EXT_FUNC_CODE, 3, subblock) == GIF_ERROR) {
PrintGifError();
return false;
}
@@ -111,7 +111,7 @@
if (EGifPutImageDesc(
GifFile,
- 0, 0, w, h, FALSE, cmaps.size() > ni ? cmaps.at(ni) : cmaps.at(cmaps.size()-1)
+ 0, 0, w, h, 0, cmaps.size() > ni ? cmaps.at(ni) : cmaps.at(cmaps.size()-1)
) == GIF_ERROR) {
PrintGifError();
endProgress();
@@ -135,7 +135,7 @@
return false;
}
- if (EGifCloseFile(GifFile) == GIF_ERROR) {
+ if (EGifCloseFile(GifFile, NULL) == GIF_ERROR) {
PrintGifError();
endProgress();
return false;
--- a/src/gifcreator.h
+++ b/src/gifcreator.h
@@ -31,6 +31,12 @@
typedef vector<GifByteType> Frame;
typedef unsigned char Byte;
+static inline void
+PrintGifError()
+{
+ fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(GIF_ERROR));
+}
+
class GifCreator
{
--- a/src/palettewidget.cpp
+++ b/src/palettewidget.cpp
@@ -34,7 +34,7 @@
PaletteWidget::~PaletteWidget()
{
- FreeMapObject(palette);
+ GifFreeMapObject(palette);
}
void PaletteWidget::paintEvent(QPaintEvent*)
@@ -117,7 +117,7 @@
if(palette && mindiff > 1)
{
qDebug() << "deleting old palette, size: " << size << ", colors: " << palette->ColorCount;
- FreeMapObject(palette);
+ GifFreeMapObject(palette);
qDebug() << "done";
palette = NULL;
}
@@ -157,7 +157,7 @@
}
ColorMapObject* previous = palette;
- palette = MakeMapObject(size, NULL);
+ palette = GifMakeMapObject(size, NULL);
if (!palette)
{
qDebug() << "NULL palette!";
@@ -165,7 +165,7 @@
}
- if (QuantizeBuffer(fimg.width(), fimg.height(), &size,
+ if (GifQuantizeBuffer(fimg.width(), fimg.height(), &size,
&(r[0]),&(g[0]),&(b[0]), &(output[0]),
palette->Colors) == GIF_ERROR)
{
@@ -178,11 +178,11 @@
//qDebug() << "difference: " << df;
if(previous && df < mindiff)
{
- FreeMapObject(palette);
+ GifFreeMapObject(palette);
palette = previous;
}
else if(df >= mindiff)
- FreeMapObject(previous);
+ GifFreeMapObject(previous);
// qDebug() << "palette (" << palette->ColorCount << ") :";
// for(int i=0;i<size;i++)
@@ -230,8 +230,8 @@
{
QStringList rgb = QString(str).split(";", QString::SkipEmptyParts);
if(palette)
- FreeMapObject(palette);
- palette = MakeMapObject(rgb.size(), NULL);
+ GifFreeMapObject(palette);
+ palette = GifMakeMapObject(rgb.size(), NULL);
if(!palette)
return false;
size = rgb.size();
--- a/src/palettewidget.h
+++ b/src/palettewidget.h
@@ -30,7 +30,7 @@
PaletteWidget(QWidget* parent=0, Qt::WindowFlags f=0);
virtual ~PaletteWidget();
ColorMapObject* map() {return palette;}
- ColorMapObject* mapCopy() {return MakeMapObject(palette->ColorCount, palette->Colors);}
+ ColorMapObject* mapCopy() {return GifMakeMapObject(palette->ColorCount, palette->Colors);}
bool fromImage(const QImage& img, int palette_size, float mindiff = 2);
void setColumnCount(int cc){cols = cc;}
bool toFile(const QString& path);
@@ -38,7 +38,7 @@
QString toString();
bool fromString(const QString& str);
int getSize() const {return size;}
- void clear() {if(palette) FreeMapObject(palette); palette = NULL; update();}
+ void clear() {if(palette) GifFreeMapObject(palette); palette = NULL; update();}
private:
int size;
int cols;

+ 53
- 0
qgifer/qt5_sourcecodepatches.patch View File

@ -0,0 +1,53 @@
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -28,8 +28,6 @@
int main(int argc, char* argv[])
{
QApplication* app = new QApplication(argc,argv);
- QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
- QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QString pro = "";
if(argc == 2 && QFile::exists(QString(argv[1])))
pro = argv[1];
--- a/src/optimizerdialog.cpp
+++ b/src/optimizerdialog.cpp
@@ -32,9 +32,9 @@
showBox->setChecked(set->value("show_optimizer",false).toBool());
proc = new QProcess(this);
- if(set->value("convert_exec","").toString().isEmpty())
+/* if(set->value("convert_exec","").toString().isEmpty())
set->setValue("convert_exec",findConvert());
- checkIM();
+ checkIM();*/
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
connect(srcButton, SIGNAL(clicked()), this, SLOT(setSrc()));
@@ -179,7 +179,7 @@
return s.split(";",QString::SkipEmptyParts);
#endif
}
-
+/*
QString OptimizerDialog::findConvert()
{
QString exec =
@@ -197,4 +197,4 @@
return env.at(i)+exec;
}
return "";
-}
+}*/
--- a/src/optimizerdialog.h
+++ b/src/optimizerdialog.h
@@ -37,7 +37,7 @@
bool convertAvailable();
void checkIM();
QStringList sysEnv();
- QString findConvert();
+// QString findConvert();
QProcess* proc;
QSettings* set;
private slots:

+ 19
- 0
wine/custompatch_glsl_shader.patch View File

@ -0,0 +1,19 @@
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -2457,9 +2457,13 @@
rel_param0.param_str, reg->idx[0].offset, shader->limits->constant_float,
prefix, rel_param0.param_str, reg->idx[0].offset);
else if (reg->idx[0].offset)
- sprintf(register_name, "%s_c[%s + %u]", prefix, rel_param0.param_str, reg->idx[0].offset);
+ sprintf(register_name, "(%s + %u >= 0 && %s + %u < %u ? %s_c[%s + %u] : vec4(0.0))",
+ rel_param0.param_str, reg->idx[0].offset, rel_param0.param_str, reg->idx[0].offset,
+ shader->limits->constant_float, prefix, rel_param0.param_str, reg->idx[0].offset);
else
- sprintf(register_name, "%s_c[%s]", prefix, rel_param0.param_str);
+ sprintf(register_name, "(%s >= 0 && %s < %u ? %s_c[%s] : vec4(0.0))",
+ rel_param0.param_str, rel_param0.param_str, shader->limits->constant_float,
+ prefix, rel_param0.param_str);
}
else
{

+ 80
- 0
wine/custompatch_msi-add-dummyactionthreads.patch View File

@ -0,0 +1,80 @@
--- a/dlls/msi/action.c
+++ a/dlls/msi/action.c
@@ -7862,6 +7862,59 @@ static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq)
return rc;
}
+/* Dummy thread just to initialize an MTA for the benefit of custom action DLLs */
+static HANDLE dummy_thread_sync_event = NULL;
+static HANDLE dummy_thread_stop_event = NULL;
+static HANDLE dummy_thread_handle = NULL;
+
+DWORD WINAPI dummy_thread_proc(void *arg)
+{
+ HRESULT hr;
+ DWORD dwWaitResult;
+
+ hr = CoInitializeEx(0, COINIT_MULTITHREADED);
+ if (FAILED(hr))
+ WARN("CoInitializeEx failed %u\n", hr);
+
+ SetEvent(dummy_thread_sync_event);
+ dwWaitResult = WaitForSingleObject(dummy_thread_stop_event, INFINITE);
+
+ if (dwWaitResult != WAIT_OBJECT_0)
+ ERR("WaitForSingleObject failed?\n");
+
+ CoUninitialize();
+ return 0;
+}
+
+static void start_dummy_thread(void)
+{
+ if (dummy_thread_handle) return;
+
+ dummy_thread_sync_event = CreateEventA(NULL, TRUE, FALSE, "DummyThreadUpAndRunning");
+ if (dummy_thread_sync_event == NULL)
+ ERR("Can't create dummy thread sync event\n");
+ dummy_thread_stop_event = CreateEventA(NULL, TRUE, FALSE, "DummyThreadStop");
+ if (dummy_thread_stop_event == NULL)
+ ERR("Can't create dummy thread stop event\n");
+ dummy_thread_handle = CreateThread(NULL, 0, dummy_thread_proc, NULL, 0, NULL);
+ if (dummy_thread_handle == NULL)
+ ERR("Can't create dummy thread\n");
+
+ WaitForSingleObject(dummy_thread_sync_event, INFINITE);
+}
+
+static void end_dummy_thread(void)
+{
+ SetEvent(dummy_thread_stop_event);
+ WaitForSingleObject(dummy_thread_handle, INFINITE);
+
+ CloseHandle(dummy_thread_sync_event);
+ CloseHandle(dummy_thread_stop_event);
+ CloseHandle(dummy_thread_handle);
+
+ dummy_thread_handle = NULL;
+}
+
/****************************************************
* TOP level entry points
*****************************************************/
@@ -7938,6 +7991,8 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
msi_adjust_privilege_properties( package );
msi_set_context( package );
+ start_dummy_thread();
+
productcode = msi_dup_property( package->db, szProductCode );
if (strcmpiW( productcode, package->ProductCode ))
{
@@ -7985,6 +8040,8 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
/* finish up running custom actions */
ACTION_FinishCustomActions(package);
+
+ end_dummy_thread();
if (package->need_rollback && !reinstall)
{

+ 11
- 0
wine/custompatch_photoshop_getticks_input.c.patch View File

@ -0,0 +1,11 @@
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -382,7 +382,7 @@
if (key_state_info &&
!(key_state_info->state[key] & 0xc0) &&
key_state_info->counter == counter &&
- GetTickCount() - key_state_info->time < 50)
+ GetTickCount() - key_state_info->time < 5)
{
/* use cached value */
return 0;

+ 66
- 0
wine/custompatch_photoshop_keepfocus_message.c.patch View File

@ -0,0 +1,66 @@
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -22,6 +22,7 @@
#include "config.h"
#include "wine/port.h"
+#include <stdio.h>
#include <assert.h>
#include <stdarg.h>
@@ -46,6 +47,7 @@
#include "controls.h"
#include "wine/debug.h"
#include "wine/exception.h"
+#include <commctrl.h>
WINE_DEFAULT_DEBUG_CHANNEL(msg);
WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -3463,7 +3465,23 @@
info.flags = SMTO_NORMAL;
info.timeout = 0;
- send_message( &info, &res, TRUE );
+ send_message( &info, &res, TRUE );
+
+ if ( msg == TTM_TRACKACTIVATE )
+ {
+
+ if ( wparam == TRUE )
+ {
+ ShowWindow( hwnd, 1 );
+ }
+ else
+ if ( wparam == FALSE )
+ {
+ ShowWindow( hwnd, 0 );
+ }
+
+ }
+
return res;
}
@@ -3486,6 +3504,22 @@
info.wm_char = WMCHAR_MAP_SENDMESSAGE;
send_message( &info, &res, FALSE );
+
+ if ( msg == TTM_TRACKACTIVATE )
+ {
+
+ if ( wparam == TRUE )
+ {
+ ShowWindow( hwnd, 1 );
+ }
+ else
+ if ( wparam == FALSE )
+ {
+ ShowWindow( hwnd, 0 );
+ }
+
+ }
+
return res;
}

+ 30
- 0
wine/custompatch_photoshop_tooltip_win.c.patch View File

@ -0,0 +1,30 @@
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -25,6 +25,7 @@
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
+#include <stdio.h>
#include "windef.h"
#include "winbase.h"
@@ -37,6 +38,7 @@
#include "winerror.h"
#include "wine/gdi_driver.h"
#include "wine/debug.h"
+#include "commctrl.h"
WINE_DEFAULT_DEBUG_CHANNEL(win);
@@ -1337,6 +1339,11 @@
MDICREATESTRUCTW mdi_cs;
CBT_CREATEWNDW cbtc;
CREATESTRUCTW cbcs;
+
+ if (strcmp ( debugstr_w(className) , debugstr_w(TOOLTIPS_CLASSW) ) == 0 )
+ {
+ cs->style |= WS_POPUP;
+ }
TRACE("%s %s ex=%08x style=%08x %d,%d %dx%d parent=%p menu=%p inst=%p params=%p\n",
unicode ? debugstr_w(cs->lpszName) : debugstr_a((LPCSTR)cs->lpszName),

+ 57
- 0
zsnes-netplay/PKGBUILD View File

@ -0,0 +1,57 @@
# Maintainer: jsteel <mail at jsteel dot org>
# Contributor: Frozen Fox <frozenfoxz@gmail.com>
# Contributor: Aurelien Foret <orelien@chez.com>
pkgname=zsnes
_pkgname=zsnes
pkgver=1.42
pkgrel=3
pkgdesc="Super Nintendo emulator (latest version supporting netplay)"
url="http://zsnes.com"
arch=('i686' 'x86_64')
license=('GPL')
options=(!buildflags)
if [[ $CARCH == "x86_64" ]]; then
depends=('gcc-libs-multilib' 'lib32-sdl' 'lib32-libpng>=1.5.0'
'lib32-libgl' 'lib32-ncurses' 'lib32-mesa')
makedepends=('nasm' 'gcc-multilib')
else
depends=('sdl' 'libpng>=1.5.0' 'mesa')
makedepends=('nasm' 'gcc')
fi
source=(zsnesnet.tar.gz
# custompath.patch
libpng.patch
$pkgname.desktop)
md5sums=('325c22d392fb33f720c6c05625884428'
'f7366961f21ed63d0844a3a6d4780bcf'
'5fb4df4bc32e1d6b1cffb16d9af6563f')
build() {
cd "$srcdir"
# patch -Np1 -i "$srcdir"/custompath.patch
patch -Np1 -i "$srcdir"/libpng.patch
if [ $CARCH == "x86_64" ]; then
export CC="gcc -m32"
export CXX="g++ -m32"
fi
chmod +x autogen.sh
./autogen.sh --prefix=/usr x_libraries=/usr/lib force_arch=i686 \
--enable-release --enable-debug
make
}
package() {
cd "$srcdir"
make DESTDIR="$pkgdir" install
install -Dm644 "$srcdir"/$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
install -Dm644 "$srcdir"/icons/48x48x32.png "$pkgdir"/usr/share/pixmaps/$pkgname.png
}

+ 38
- 0
zsnes-netplay/custompath.patch View File

@ -0,0 +1,38 @@
diff -ur src.orig/configure.in src/configure.in
--- src.orig/configure.in 2012-10-01 20:59:22.712987576 +0100
+++ src/configure.in 2012-10-01 21:00:29.374018431 +0100
@@ -116,7 +116,7 @@
CFLAGS="$CFLAGS -DDEBUG -O0 -fno-omit-frame-pointer -ggdb3"
NFLAGS="$NFLAGS -DDEBUG -g -s -O0" dnl it works now
- ZSNESEXE="zsnesd"
+ ZSNESEXE="zsnes-netplay"
else
AC_MSG_RESULT(no)
diff -ur src.orig/linux/zfilew.c src/linux/zfilew.c
--- src.orig/linux/zfilew.c 2012-10-01 20:59:22.712987576 +0100
+++ src/linux/zfilew.c 2012-10-01 20:59:42.296623751 +0100
@@ -464,7 +464,7 @@
#ifdef __LINUX__
char zcfgdir[1024];
-#define ZCFG_DIR "/.zsnes"
+#define ZCFG_DIR "/.zsnes-netplay"
#define ZCFG_DIR_LEN (1023-strlen(ZCFG_DIR))
void obtaindir()
diff -ur src.orig/Makefile.in src/Makefile.in
--- src.orig/Makefile.in 2012-10-01 20:59:22.712987576 +0100
+++ src/Makefile.in 2012-10-01 20:59:42.296623751 +0100
@@ -225,8 +225,8 @@
install:
@INSTALL@ -d -m 0755 ${DESTDIR}/@prefix@/bin
@INSTALL@ -m 0755 @ZSNESEXE@ ${DESTDIR}/@prefix@/bin
- @INSTALL@ -d -m 0755 ${DESTDIR}/@prefix@/man/man1
- @INSTALL@ -m 0644 linux/zsnes.1 ${DESTDIR}/@prefix@/man/man1
+ @INSTALL@ -d -m 0755 ${DESTDIR}/@prefix@/share/man/man1
+ @INSTALL@ -m 0644 linux/zsnes.1 ${DESTDIR}/@prefix@/share/man/man1/zsnes-netplay.1
uninstall:
rm -f @prefix@/bin/$(notdir @ZSNESEXE@) @prefix@/man/man5/zsnes.5

+ 24
- 0
zsnes-netplay/libpng.patch View File

@ -0,0 +1,24 @@
*** src/zip/zpng.c 2012-05-29 18:44:36.888974112 +0200
--- src/zip/zpng.c 2012-05-29 18:59:19.292452834 +0200
***************
*** 80,89 ****
/*set a lot of image info (code adapted from libpng documentation!)*/
png_set_IHDR(png_ptr, info_ptr, width, height,
! 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
- info_ptr->color_type=PNG_COLOR_TYPE_RGB_ALPHA;
/*Allocate an array of scanline pointers*/
row_pointers=(png_bytep*)malloc(height*sizeof(png_bytep));
--- 80,88 ----
/*set a lot of image info (code adapted from libpng documentation!)*/
png_set_IHDR(png_ptr, info_ptr, width, height,
! 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
/*Allocate an array of scanline pointers*/
row_pointers=(png_bytep*)malloc(height*sizeof(png_bytep));

+ 10
- 0
zsnes-netplay/zsnes.desktop View File

@ -0,0 +1,10 @@
[Desktop Entry]
Categories=Application;Game
Comment=Super Nintendo emulator
Exec=env SDL_AUDIODRIVER="alsa" /usr/bin/zsnesd
Hidden=false
Icon=/usr/share/pixmaps/zsnes.png
Name=Zsnes
StartupNotify=false
Terminal=false
Type=Application

BIN
zsnes-netplay/zsnesnet.tar.gz View File


Loading…
Cancel
Save