diff --git a/cr2fits/PKGBUILD b/cr2fits/PKGBUILD new file mode 100644 index 0000000..7dbd850 --- /dev/null +++ b/cr2fits/PKGBUILD @@ -0,0 +1,23 @@ +# Maintainer: Sabart Otto - Seberm 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 ") + print("The 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!") diff --git a/cr2hdr/PKGBUILD b/cr2hdr/PKGBUILD new file mode 100644 index 0000000..d1e3013 --- /dev/null +++ b/cr2hdr/PKGBUILD @@ -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" +} diff --git a/dolphin/media-autoplay.patch b/dolphin/media-autoplay.patch new file mode 100644 index 0000000..8bec95c --- /dev/null +++ b/dolphin/media-autoplay.patch @@ -0,0 +1,72 @@ +--- a/src/panels/information/phononwidget.cpp ++++ b/src/panels/information/phononwidget.cpp +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -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; diff --git a/kde-servicemenus-cr2fits/PKGBUILD b/kde-servicemenus-cr2fits/PKGBUILD new file mode 100644 index 0000000..9f7632e --- /dev/null +++ b/kde-servicemenus-cr2fits/PKGBUILD @@ -0,0 +1,25 @@ +# Maintainer: Sabart Otto - Seberm "$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= diff --git a/kde-servicemenus-mediainfo/107335-AudioVideoinfo-qt.desktop b/kde-servicemenus-mediainfo/107335-AudioVideoinfo-qt.desktop new file mode 100644 index 0000000..1126a78 --- /dev/null +++ b/kde-servicemenus-mediainfo/107335-AudioVideoinfo-qt.desktop @@ -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 diff --git a/kde-servicemenus-mediainfo/PKGBUILD b/kde-servicemenus-mediainfo/PKGBUILD new file mode 100644 index 0000000..99cc6e0 --- /dev/null +++ b/kde-servicemenus-mediainfo/PKGBUILD @@ -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/ +} diff --git a/kde-servicemenus-mediainfo/program-cleanup.patch b/kde-servicemenus-mediainfo/program-cleanup.patch new file mode 100644 index 0000000..a1d8be9 --- /dev/null +++ b/kde-servicemenus-mediainfo/program-cleanup.patch @@ -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 diff --git a/kde-servicemenus-multimediatools/PKGBUILD b/kde-servicemenus-multimediatools/PKGBUILD new file mode 100644 index 0000000..09f15c7 --- /dev/null +++ b/kde-servicemenus-multimediatools/PKGBUILD @@ -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} +} diff --git a/kde-servicemenus-multimediatools/ffmpeg-fileconversion-audio.sh b/kde-servicemenus-multimediatools/ffmpeg-fileconversion-audio.sh new file mode 100644 index 0000000..0cb9567 --- /dev/null +++ b/kde-servicemenus-multimediatools/ffmpeg-fileconversion-audio.sh @@ -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: , , 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 +#vn = Disable video +#acodec = Used Audio Codec +#y = Overwrite output files diff --git a/kde-servicemenus-multimediatools/ffmpeg-fileconversion-video.sh b/kde-servicemenus-multimediatools/ffmpeg-fileconversion-video.sh new file mode 100644 index 0000000..8c1f846 --- /dev/null +++ b/kde-servicemenus-multimediatools/ffmpeg-fileconversion-video.sh @@ -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: , , 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 +#vn = Disable video +#acodec = Used Audio Codec +#y = Overwrite output files diff --git a/kde-servicemenus-multimediatools/ffmpeg-fileconversion.desktop b/kde-servicemenus-multimediatools/ffmpeg-fileconversion.desktop new file mode 100644 index 0000000..480897a --- /dev/null +++ b/kde-servicemenus-multimediatools/ffmpeg-fileconversion.desktop @@ -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ää <> <> diff --git a/kde-servicemenus-multimediatools/ffmpeg-filelengthcut.sh b/kde-servicemenus-multimediatools/ffmpeg-filelengthcut.sh new file mode 100644 index 0000000..1ac4964 --- /dev/null +++ b/kde-servicemenus-multimediatools/ffmpeg-filelengthcut.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# + +#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= +$END_TIME= +$INPUT_FILEFORMAT= + + ++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 +#if 0 minutes, don't show the field if +#if 0 seconds, don't show the field if +#if 0 milliseconds, don't show the field if + +#but final output can now be like + +#and >>> final output + + + + +#ffmpeg -i -ss -to + + + + +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 \ No newline at end of file diff --git a/kde-servicemenus-unlockpdf/PKGBUILD b/kde-servicemenus-unlockpdf/PKGBUILD new file mode 100644 index 0000000..0cadc76 --- /dev/null +++ b/kde-servicemenus-unlockpdf/PKGBUILD @@ -0,0 +1,30 @@ +# Maintainer: Sabart Otto - Seberm "$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 diff --git a/mlv2dng/PKGBUILD b/mlv2dng/PKGBUILD new file mode 100644 index 0000000..28a2d04 --- /dev/null +++ b/mlv2dng/PKGBUILD @@ -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" +} diff --git a/mlvdump/PKGBUILD b/mlvdump/PKGBUILD new file mode 100644 index 0000000..6cced26 --- /dev/null +++ b/mlvdump/PKGBUILD @@ -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!!! +} diff --git a/pano2vr/.AURINFO b/pano2vr/.AURINFO new file mode 100644 index 0000000..7b15bf3 --- /dev/null +++ b/pano2vr/.AURINFO @@ -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 + diff --git a/pano2vr/PKGBUILD b/pano2vr/PKGBUILD new file mode 100644 index 0000000..003ae34 --- /dev/null +++ b/pano2vr/PKGBUILD @@ -0,0 +1,38 @@ +# Contributor: Ismael Barros (RazZziel) +# Maintainer: Luigi Ranghetti + +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 +} diff --git a/pano2vr/changedir.patch b/pano2vr/changedir.patch new file mode 100644 index 0000000..b08f7aa --- /dev/null +++ b/pano2vr/changedir.patch @@ -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 diff --git a/pano2vr/pano2vr.desktop b/pano2vr/pano2vr.desktop new file mode 100644 index 0000000..f4a49c5 --- /dev/null +++ b/pano2vr/pano2vr.desktop @@ -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; diff --git a/panotour/PKGBUILD b/panotour/PKGBUILD new file mode 100644 index 0000000..1e64126 --- /dev/null +++ b/panotour/PKGBUILD @@ -0,0 +1,29 @@ +# Contributor: Fincer +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" +} + diff --git a/panotour/panotour b/panotour/panotour new file mode 100644 index 0000000..522837e --- /dev/null +++ b/panotour/panotour @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/panotour +./Panotour.sh $@ diff --git a/panotour/panotour.desktop b/panotour/panotour.desktop new file mode 100644 index 0000000..fa8e5c6 --- /dev/null +++ b/panotour/panotour.desktop @@ -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 diff --git a/panotour/panotour.install b/panotour/panotour.install new file mode 100644 index 0000000..80312d4 --- /dev/null +++ b/panotour/panotour.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/panotour/panotour.png b/panotour/panotour.png new file mode 100755 index 0000000..2684bf1 Binary files /dev/null and b/panotour/panotour.png differ diff --git a/panotour/panotour.tar.gz b/panotour/panotour.tar.gz new file mode 100644 index 0000000..62bd52e Binary files /dev/null and b/panotour/panotour.tar.gz differ diff --git a/panotourpro/PKGBUILD b/panotourpro/PKGBUILD new file mode 100644 index 0000000..f9d3d03 --- /dev/null +++ b/panotourpro/PKGBUILD @@ -0,0 +1,29 @@ +# Contributor: Fincer +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" +} + diff --git a/panotourpro/panotourpro b/panotourpro/panotourpro new file mode 100644 index 0000000..5807534 --- /dev/null +++ b/panotourpro/panotourpro @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/panotourpro +./PanotourPro.sh $@ diff --git a/panotourpro/panotourpro.desktop b/panotourpro/panotourpro.desktop new file mode 100644 index 0000000..54206f2 --- /dev/null +++ b/panotourpro/panotourpro.desktop @@ -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 diff --git a/panotourpro/panotourpro.install b/panotourpro/panotourpro.install new file mode 100644 index 0000000..80312d4 --- /dev/null +++ b/panotourpro/panotourpro.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/panotourpro/panotourpro.png b/panotourpro/panotourpro.png new file mode 100644 index 0000000..8c8bfb0 Binary files /dev/null and b/panotourpro/panotourpro.png differ diff --git a/photoscan-pro/PKGBUILD b/photoscan-pro/PKGBUILD new file mode 100644 index 0000000..eed55ed --- /dev/null +++ b/photoscan-pro/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer: Fincer +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 +} diff --git a/photoscan-pro/photoscan-pro.desktop b/photoscan-pro/photoscan-pro.desktop new file mode 100644 index 0000000..ad1bc3d --- /dev/null +++ b/photoscan-pro/photoscan-pro.desktop @@ -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 diff --git a/photoscan-pro/photoscan-pro.install b/photoscan-pro/photoscan-pro.install new file mode 100644 index 0000000..80312d4 --- /dev/null +++ b/photoscan-pro/photoscan-pro.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/photoscan-pro/photoscan-pro.png b/photoscan-pro/photoscan-pro.png new file mode 100644 index 0000000..7c152f6 Binary files /dev/null and b/photoscan-pro/photoscan-pro.png differ diff --git a/photoscan-pro/photoscan-pro.runtime b/photoscan-pro/photoscan-pro.runtime new file mode 100644 index 0000000..4517c1a --- /dev/null +++ b/photoscan-pro/photoscan-pro.runtime @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/photoscan-pro/ +./photoscan.sh $@ diff --git a/photoscan-pro/qtfix.patch b/photoscan-pro/qtfix.patch new file mode 100644 index 0000000..c9dd552 --- /dev/null +++ b/photoscan-pro/qtfix.patch @@ -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 diff --git a/photoscan-pro/qtfix126.patch b/photoscan-pro/qtfix126.patch new file mode 100644 index 0000000..5a178ab --- /dev/null +++ b/photoscan-pro/qtfix126.patch @@ -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" "$@" diff --git a/photoscan/PKGBUILD b/photoscan/PKGBUILD new file mode 100644 index 0000000..2f3b7f2 --- /dev/null +++ b/photoscan/PKGBUILD @@ -0,0 +1,26 @@ +# Maintainer: Fincer +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" +} diff --git a/photoscan/photoscan.desktop b/photoscan/photoscan.desktop new file mode 100644 index 0000000..246241b --- /dev/null +++ b/photoscan/photoscan.desktop @@ -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 diff --git a/photoscan/photoscan.install b/photoscan/photoscan.install new file mode 100644 index 0000000..80312d4 --- /dev/null +++ b/photoscan/photoscan.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/photoscan/photoscan.png b/photoscan/photoscan.png new file mode 100644 index 0000000..7c152f6 Binary files /dev/null and b/photoscan/photoscan.png differ diff --git a/photoscan/photoscan.runtime b/photoscan/photoscan.runtime new file mode 100644 index 0000000..86decd6 --- /dev/null +++ b/photoscan/photoscan.runtime @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/photoscan/ +./photoscan.sh $@ diff --git a/playonlinux/0001-remove-menuitems.patch b/playonlinux/0001-remove-menuitems.patch new file mode 100644 index 0000000..0eb29f1 --- /dev/null +++ b/playonlinux/0001-remove-menuitems.patch @@ -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() diff --git a/playonlinux/0002-add-shortcutitems.patch b/playonlinux/0002-add-shortcutitems.patch new file mode 100644 index 0000000..b1c4a70 --- /dev/null +++ b/playonlinux/0002-add-shortcutitems.patch @@ -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 diff --git a/playonlinux/0003-add-addremoveprograms.patch b/playonlinux/0003-add-addremoveprograms.patch new file mode 100644 index 0000000..f586659 --- /dev/null +++ b/playonlinux/0003-add-addremoveprograms.patch @@ -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 diff --git a/playonlinux/0004-change-wineversions.patch b/playonlinux/0004-change-wineversions.patch new file mode 100644 index 0000000..950d285 --- /dev/null +++ b/playonlinux/0004-change-wineversions.patch @@ -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 : diff --git a/playonlinux/0005-add-optimussupport.patch b/playonlinux/0005-add-optimussupport.patch new file mode 100644 index 0000000..ffd37eb --- /dev/null +++ b/playonlinux/0005-add-optimussupport.patch @@ -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 diff --git a/playonlinux/0006-disable-updatenotification.patch b/playonlinux/0006-disable-updatenotification.patch new file mode 100644 index 0000000..2751e14 --- /dev/null +++ b/playonlinux/0006-disable-updatenotification.patch @@ -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 + diff --git a/playonlinux/0007-disable-closingandwinemessage.patch b/playonlinux/0007-disable-closingandwinemessage.patch new file mode 100644 index 0000000..ed4e815 --- /dev/null +++ b/playonlinux/0007-disable-closingandwinemessage.patch @@ -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"): diff --git a/qgifer/0001_cmakelinkingfix.patch b/qgifer/0001_cmakelinkingfix.patch new file mode 100644 index 0000000..ff3f7eb --- /dev/null +++ b/qgifer/0001_cmakelinkingfix.patch @@ -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}) diff --git a/qgifer/0001_printgiferrorfix.patch.disabled b/qgifer/0001_printgiferrorfix.patch.disabled new file mode 100644 index 0000000..0c849b6 --- /dev/null +++ b/qgifer/0001_printgiferrorfix.patch.disabled @@ -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; + } diff --git a/qgifer/0001_removeframelimit_addcodecs.patch b/qgifer/0001_removeframelimit_addcodecs.patch new file mode 100644 index 0000000..4a9724d --- /dev/null +++ b/qgifer/0001_removeframelimit_addcodecs.patch @@ -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 diff --git a/qgifer/giflibport.patch b/qgifer/giflibport.patch new file mode 100644 index 0000000..9ddfdac --- /dev/null +++ b/qgifer/giflibport.patch @@ -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 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 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;iColorCount, 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; diff --git a/qgifer/qt5_sourcecodepatches.patch b/qgifer/qt5_sourcecodepatches.patch new file mode 100644 index 0000000..19bbb0e --- /dev/null +++ b/qgifer/qt5_sourcecodepatches.patch @@ -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: diff --git a/wine/custompatch_glsl_shader.patch b/wine/custompatch_glsl_shader.patch new file mode 100644 index 0000000..dab866c --- /dev/null +++ b/wine/custompatch_glsl_shader.patch @@ -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 + { diff --git a/wine/custompatch_msi-add-dummyactionthreads.patch b/wine/custompatch_msi-add-dummyactionthreads.patch new file mode 100644 index 0000000..eaaab0a --- /dev/null +++ b/wine/custompatch_msi-add-dummyactionthreads.patch @@ -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) + { diff --git a/wine/custompatch_photoshop_getticks_input.c.patch b/wine/custompatch_photoshop_getticks_input.c.patch new file mode 100644 index 0000000..596ae25 --- /dev/null +++ b/wine/custompatch_photoshop_getticks_input.c.patch @@ -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; diff --git a/wine/custompatch_photoshop_keepfocus_message.c.patch b/wine/custompatch_photoshop_keepfocus_message.c.patch new file mode 100644 index 0000000..07c0ef1 --- /dev/null +++ b/wine/custompatch_photoshop_keepfocus_message.c.patch @@ -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 + #include + #include + +@@ -46,6 +47,7 @@ + #include "controls.h" + #include "wine/debug.h" + #include "wine/exception.h" ++#include + + 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; + } + diff --git a/wine/custompatch_photoshop_tooltip_win.c.patch b/wine/custompatch_photoshop_tooltip_win.c.patch new file mode 100644 index 0000000..5245fa0 --- /dev/null +++ b/wine/custompatch_photoshop_tooltip_win.c.patch @@ -0,0 +1,30 @@ +--- a/dlls/user32/win.c ++++ b/dlls/user32/win.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #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), diff --git a/zsnes-netplay/PKGBUILD b/zsnes-netplay/PKGBUILD new file mode 100644 index 0000000..553c117 --- /dev/null +++ b/zsnes-netplay/PKGBUILD @@ -0,0 +1,57 @@ +# Maintainer: jsteel +# Contributor: Frozen Fox +# Contributor: Aurelien Foret + +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 + +} diff --git a/zsnes-netplay/custompath.patch b/zsnes-netplay/custompath.patch new file mode 100644 index 0000000..c3ab6c1 --- /dev/null +++ b/zsnes-netplay/custompath.patch @@ -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 diff --git a/zsnes-netplay/libpng.patch b/zsnes-netplay/libpng.patch new file mode 100644 index 0000000..f3615ac --- /dev/null +++ b/zsnes-netplay/libpng.patch @@ -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)); diff --git a/zsnes-netplay/zsnes.desktop b/zsnes-netplay/zsnes.desktop new file mode 100644 index 0000000..6609574 --- /dev/null +++ b/zsnes-netplay/zsnes.desktop @@ -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 diff --git a/zsnes-netplay/zsnesnet.tar.gz b/zsnes-netplay/zsnesnet.tar.gz new file mode 100644 index 0000000..ddf8ce9 Binary files /dev/null and b/zsnes-netplay/zsnesnet.tar.gz differ