Hello community,

here is the log from the commit of package PlayOnLinux for openSUSE:Factory 
checked in at 2018-11-28 11:15:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/PlayOnLinux (Old)
 and      /work/SRC/openSUSE:Factory/.PlayOnLinux.new.19453 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "PlayOnLinux"

Wed Nov 28 11:15:24 2018 rev:6 rq:652223 version:4.3.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/PlayOnLinux/PlayOnLinux.changes  2018-07-04 
23:56:23.935808211 +0200
+++ /work/SRC/openSUSE:Factory/.PlayOnLinux.new.19453/PlayOnLinux.changes       
2018-11-28 11:15:27.554725749 +0100
@@ -1,0 +2,12 @@
+Tue Nov 27 18:15:23 UTC 2018 - ec...@opensuse.org
+
+- Update to 4.3.3
+  * Linux: Fix HDPI support
+  * Compatibility with OSX < Mojave
+- Changes from 4.3
+  * Various fix on OSX
+  * Phoenicis (POL 5) winebuild compatibility. POL 4 winebuilds 
+    will be deprecated. 
+    (See https://github.com/PhoenicisOrg/phoenicis-winebuild)
+  
+-------------------------------------------------------------------

Old:
----
  PlayOnLinux_4.2.12.tar.gz

New:
----
  PlayOnLinux_4.3.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ PlayOnLinux.spec ++++++
--- /var/tmp/diff_new_pack.mVdEwT/_old  2018-11-28 11:15:31.234720612 +0100
+++ /var/tmp/diff_new_pack.mVdEwT/_new  2018-11-28 11:15:31.246720595 +0100
@@ -18,7 +18,7 @@
 
 Name:           PlayOnLinux
 %define _name   playonlinux
-Version:        4.2.12
+Version:        4.3.3
 Release:        0
 Summary:        Play your Windows games on GNU/Linux
 License:        GPL-3.0-only
@@ -37,6 +37,7 @@
 Requires:       dbus-1-python
 Requires:       gettext
 Requires:       icoutils
+Requires:       jq
 # Remove when p7zip-full is in all products
 %if 0%{suse_version} > 1500
 Requires:       p7zip-full
@@ -65,6 +66,9 @@
 %setup -q -n %{_name}
 %patch0 -p1
 %patch10 -p1
+# rpmlint
+find . -type f -exec sed -i -e 's|\/usr\/bin\/env python|\/usr\/bin\/python|g' 
{} \;
+find . -type f -exec sed -i -e 's|\/usr\/bin\/env bash|\/bin\/bash|g' {} \;
 
 %build
 # Nothing to build.

++++++ PlayOnLinux_4.2.12.tar.gz -> PlayOnLinux_4.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/CHANGELOG.md new/playonlinux/CHANGELOG.md
--- old/playonlinux/CHANGELOG.md        2017-06-19 21:03:38.000000000 +0200
+++ new/playonlinux/CHANGELOG.md        2018-11-20 23:04:47.000000000 +0100
@@ -1,3 +1,11 @@
+# 4.3.3
+* Linux: Fix HDPI support
+* Compatibility with OSX < Mojave
+
+# 4.3
+* Various fix on OSX
+* Phoenicis (POL 5) winebuild compatibility. POL 4 winebuilds will be 
deprecated. (See https://github.com/PhoenicisOrg/phoenicis-winebuild)
+
 # 4.2.11
 * Fix POL_SetupWindow_download clobbering $FILENAME
 * Fix small typo in first use "send report" message
@@ -138,11 +146,11 @@
 * Corefonts are now managed as any other POL_Call package. (Debian.lib is 
consequently no longer needed)
 * Removing installation process of missing gecko and mono at startup. It 
should not happen anymore
 * Cleaner way to save panel position
-* Fix a bug in GetSettings() where the value contain the equal ('=') character 
+* Fix a bug in GetSettings() where the value contain the equal ('=') character
 * PlayOnMac does no longer need a reboot after installing XQuartz
 * PlayOnMac does no longer popup a warning before xterm is installed
-* Removing IRC 
-* Icones install can now be bigger than 22x22 
+* Removing IRC
+* Icones install can now be bigger than 22x22
 
 # 4.2.2
 
@@ -161,7 +169,7 @@
   
(http://www.playonlinux.com/en/topic-10442-New_Warning_Message_on_startup.html)
 * wine-mono download support
 * Fix POL_SetupWindow_message typo (not enough video memory message) (#2790)
-* POL_LoadVar_Device: refacto POL_DetectVideoCards; 
+* POL_LoadVar_Device: refacto POL_DetectVideoCards;
   Let user choose when there's more than one known videocard present
 * Add link to download page in side panel when version is not up-to-date 
(#2677)
   Not sure it's visible enough, could be improved.
@@ -176,11 +184,11 @@
   scripts in $POL_USER_ROOT/configurations/function_overrides/ override 
function
   scripts by the same name. This feature disables bug reporting.
 * Fix website login when username contains spaces (#3573)
-* "Run an .exe in this virtual disk" sets current directory to program's 
+* "Run an .exe in this virtual disk" sets current directory to program's
   directory (#1855)
 * fix "wineserver not found" in interactive use of POL_Wine_Direct3D /
   POL_Wine_X11Drv / POL_Wine_DirectSound / POL_Wine_DirectInput
-* Remove use of os.system() from mainwindow.py and configure.py 
+* Remove use of os.system() from mainwindow.py and configure.py
   (less overhead, less quoting nightmare)
 * Add missing POL_Wine_AutoSetVersionEnv before wineserver calls
 
@@ -276,7 +284,7 @@
 
 # 4.1.5
 
-* POL_Debug_* cookie forgotten 
+* POL_Debug_* cookie forgotten
 * Bug in update process
 
 # 4.1.4
@@ -287,7 +295,7 @@
 * Clickable links on install window
 * Better (and clearer) debug windows
 * Small fix for OSX 10.8
-* NEW: PlayOnLinux --run supports extensions! 
+* NEW: PlayOnLinux --run supports extensions!
 * POL_Shortcut_Document : Researches
 * New POL_SetupWindow_browse GUI
 * POL_SetupWindow_browse supports filters
@@ -334,7 +342,7 @@
 # 4.1.1
 
 Fixes to critial problem
-* Removing optirun support which makes wine hang 
+* Removing optirun support which makes wine hang
 * UTF8 problem with files association
 
 # 4.1.0
@@ -360,7 +368,7 @@
 * Local var problems
 * POL_Lnk_Read to read .lnk files
 * New screenshot system
-* Bugfix 
+* Bugfix
 * Arch problem
 * Pre run command should not be shown for prefixes
 * Fix TRANSLATORS files, some names did not appear.
@@ -411,7 +419,7 @@
 * Bug 732 : text color
 * Writting POL_WGET everywhere
 * unset WINEARCH
-* When installing a patched Wine, deploy Gecko for the non-patched version 
+* When installing a patched Wine, deploy Gecko for the non-patched version
 * Report "patched Wine version" in prefix logs only when it's true
 * POL_ExtractIcon, POL_ExtractBiggestIcon: can also extract icons from .ico 
files
 * Removed dependency upon curl by posting to pastebin with wget (bug #670)
@@ -450,7 +458,7 @@
   recreated if user choose to delete it)
 * Title in IRC close confirm box
 * wineprefixcreate should no longer exist!
-  POL needs to run it on OLD POL versions, 
+  POL needs to run it on OLD POL versions,
   but should NOT run in on recent ones.
 * Bugfix in requiredversion
 * SelectPrefix make the directory
@@ -485,7 +493,7 @@
 * Title on dialog boxes
 * OpenGL detection
 * Removing Offline POL (no longer supported)
-* rm "*" message removed (Don't worry, it was controled) 
+* rm "*" message removed (Don't worry, it was controled)
 * POL_Shortcut(): Possibly to use path instead of executable
 * POL_Shortcut_InsertBeforeWine: made sure the commands are not interpreted
   before insertion. Even \n is no longer interpreted, to insert several lines,
@@ -569,7 +577,7 @@
 * POL_Functions fixed.
 * Update of Capture.
 * Variouses fixes.
-       
+
 # 4.0.2
 
 * External shortcuts fixed.
@@ -701,8 +709,8 @@
        * playonlinux-cmd
        * playonlinux-pkg
        * Plugins: Capture
-* Removing some unused files plus cleaning some files. 
-* Update copyright header. 
+* Removing some unused files plus cleaning some files.
+* Update copyright header.
 
 # 3.8.1
 
@@ -740,7 +748,7 @@
 * Added POL_SetupWindow_auto_shortcut which will replace 
POL_SetupWindow_make_shortcut
 * Added POL_SetupError function
 * install.py is fully compatible with offline mode plugin
-* Some bugs corrected in wine version management 
+* Some bugs corrected in wine version management
 
 # 3.7.6
 
@@ -821,7 +829,7 @@
 
 # 3.2
 
-* PlayOnLinux's game configurator is remade. 
+* PlayOnLinux's game configurator is remade.
 * The scriptor has the possibility to make a configurator for each script in 
~/.PlayOnLinux/configurations/configurators/script_name
 * The irc chat is removed
 * GLSL bug corrected
@@ -835,13 +843,13 @@
 
 # 3.1.2
 
-* PlayOnLinux install menu is faster 
+* PlayOnLinux install menu is faster
 * Low connection can read the descriptions
 
 # 3.1.1
 
 * Description box in install menu has become an html box. Now, it's possible 
to underline or bold words in the description of a game.
-* Descriptions are downloaded when the user clic on the name of the game, and 
no more when PlayOnLinux repositories are refreshed. 
+* Descriptions are downloaded when the user clic on the name of the game, and 
no more when PlayOnLinux repositories are refreshed.
 * Users can edit the description of a game on the website when they send a 
script.
 * PlayOnLinux repositories refreshing has become faster
 * A bug corrected in folders like "Applications Data". Now, it has the same 
name for every languages do avoid problems.
@@ -878,7 +886,7 @@
 * New GUIs
 * POL is is .po files
 * New wine version support GUI
-* Minor corrections in IRC 
+* Minor corrections in IRC
 * A lot of new fonction
 * Use_WineVersion function
 
@@ -913,18 +921,18 @@
 # 2.6
 
 * A lot of improvement in IRC chat
-* An Option GUI 
+* An Option GUI
 * A lot of settings added
 
-# 2.5 
+# 2.5
 
-* IRC Chat integrated 
+* IRC Chat integrated
 * Lynx dependances does exists any more
 * Install menu bug fixed
 
 # 2.3
 
-* New install menu 
+* New install menu
 * Lot of bugs fixed
 
 # 2.2.1
@@ -939,7 +947,7 @@
 * New menu more user friendly
 * Autorun automated installer
 * Community and workonlinux doesn't exists anymore
-* Ask_For_cdrom improved 
+* Ask_For_cdrom improved
 * Fixed bugs in package manager
 * Lot of translations
 * Lot of commands translated in english
@@ -953,7 +961,7 @@
 * Hungarian translation
 * .pol package manager
 * A new logo
-* LiveInstall is called "Manual installation" 
+* LiveInstall is called "Manual installation"
 * Bug corrected in icons installation
 * Wine GIT in wineversion menu
 
@@ -1002,7 +1010,7 @@
 
 # 2.0.2
 
-* Wine GIT added 
+* Wine GIT added
 * Wine Booster 2 Added
 
 # 2.0.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/Makefile new/playonlinux/Makefile
--- old/playonlinux/Makefile    2017-06-19 21:03:38.000000000 +0200
+++ new/playonlinux/Makefile    2018-11-20 23:04:47.000000000 +0100
@@ -24,6 +24,7 @@
 CC = gcc $(CFLAGS)
 PYTHON = python2 -m py_compile
 GZIP = gzip
+SHELL := /bin/bash
 
 PREFIX ?= /usr
 DESTDIR ?= # root dir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/bash/install_wver 
new/playonlinux/bash/install_wver
--- old/playonlinux/bash/install_wver   2017-06-19 21:03:38.000000000 +0200
+++ new/playonlinux/bash/install_wver   2018-11-20 23:04:47.000000000 +0100
@@ -15,16 +15,17 @@
 
 # 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. 
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 [ "$PLAYONLINUX" = "" ] && exit 0
-source "$PLAYONLINUX/lib/sources" 
+source "$PLAYONLINUX/lib/sources"
 
 POL_SetupWindow_Init
 [ "$2" = "" ] && POL_System_SetArch "auto" || POL_System_SetArch "$2"
-version=$1
+[ "$3" = "" ] && distribution="upstream" || distribution="$3"
+version="$1"
 TITLE="Wine $version ($2) installer"
 POL_SetupWindow_free_presentation "Wine $1" "$(eval_gettext "This wizard will 
help you to install Wine: ")$version ($2)         $(eval_gettext 'on the 
$APPLICATION_TITLE environment.')"
-POL_Wine_InstallVersion "$1"
+POL_Wine_InstallVersion "$1" "$3"
 POL_SetupWindow_Close
-exit 0
\ No newline at end of file
+exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/bash/startup_after_server 
new/playonlinux/bash/startup_after_server
--- old/playonlinux/bash/startup_after_server   2017-06-19 21:03:38.000000000 
+0200
+++ new/playonlinux/bash/startup_after_server   2018-11-20 23:04:47.000000000 
+0100
@@ -24,13 +24,13 @@
 
 source "$PLAYONLINUX/lib/sources" 
 
-export XQUARTZ_VERSION="2.7.7"
+export XQUARTZ_VERSION="2.7.11"
 
 
 install_x11()
 {
 
-       
XQuartzUrl="http://xquartz.macosforge.org/downloads/SL/XQuartz-$XQUARTZ_VERSION.dmg";
+       
XQuartzUrl="http://dl.bintray.com/xquartz/downloads/XQuartz-$XQUARTZ_VERSION.dmg";
        FilePrefix="XQuartz"
                
        STEP_TITLE="XQuartz"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/lib/wine.lib new/playonlinux/lib/wine.lib
--- old/playonlinux/lib/wine.lib        2017-06-19 21:03:38.000000000 +0200
+++ new/playonlinux/lib/wine.lib        2018-11-20 23:04:47.000000000 +0100
@@ -15,7 +15,7 @@
 
 # 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. 
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 # wine.lib
 # --------
@@ -513,7 +513,7 @@
                NoErrors="True"
                shift
        fi
-       
+
        if [ ! "$(POL_Config_Read NO_FSCHECK)" = "TRUE" ]; then
                if [ "$1" = "start" ]; then
                        if [ "$2" = "/unix" ]; then
@@ -569,7 +569,7 @@
                        errors=$?
                fi
        else
-               # FIXME 
+               # FIXME
                $BEFORE_WINE $(POL_Config_Read BEFORE_WINE) wine "$@"  2> 
"$WINEPREFIX/playonlinux.log" > "$WINEPREFIX/playonlinux.log"
                errors=$?
        fi
@@ -597,7 +597,7 @@
        else
                touch "$WINEPREFIX/playonlinux.cfg" 2> /dev/null
        fi
-       
+
        ## In fact it's a bad idea
        #if [ "$(POL_Config_PrefixRead ARCH)" = "x86" ]; then ## Comme ca, pas 
de conflits
        #       export WINEARCH=win32
@@ -658,6 +658,19 @@
        # Install a wineversion
        # Usage: POL_Wine_InstallVersion [VERSION]
        [ ! "$1" = "" ] && export POL_WINEVERSION="$1"
+       [ ! "$2" = "" ] && export POL_WINEDISTRIBUTION="$2" || export 
POL_WINEDISTRIBUTION="upstream"
+
+       if [[ "$POL_WINEVERSION" == *"-staging"* ]]; then
+           POL_WINEVERSION="${POL_WINEVERSION/-staging/}"
+                       POL_WINEDISTRIBUTION="staging"
+       else
+                       POL_WINEVERSION_INSTALL="$POL_WINEVERSION"
+       fi
+
+       if [ "$POL_WINEDISTRIBUTION" == "staging" ]; then
+               POL_WINEVERSION_INSTALL="$POL_WINEVERSION-staging"
+       fi
+
        [ "$POL_WINEVERSION" = "" ] && POL_Debug_Fatal "No POL_WINEVERSION set"
        [ "$POL_ARCH" = "" ] && POL_System_SetArch "auto"
        POL_Debug_Message "Installing wine version path: $POL_WINEVERSION, 
$POL_ARCH"
@@ -670,7 +683,15 @@
        touch "$WINEDIR/installing"
        if [ ! -e "$WINEDIR/$POL_WINEVERSION" ]
        then
-               WINE_ADDRESS=$($POL_WGET "$WINE_SITE/$WINE_SECTION.lst" -O- | 
grep ";$POL_WINEVERSION;" | tail -n 1 | cut -d ";" -f1)
+               POL_Debug_Message "Wine site: $WINE_SITE"
+               echo $POL_WGET "$WINE_SITE" -O-
+               WINEDATA="$($POL_WGET "$WINE_SITE" -O- |jq -r ".[] | 
select(.name==\"$POL_WINEDISTRIBUTION-$ARCH_PREFIX-$POL_ARCH\") | .packages | 
.[] | select(.version==\"$POL_WINEVERSION\")")"
+               POL_Debug_Message "Winebuild data: $WINEDATA"
+
+               WINE_ADDRESS="$(echo "$WINEDATA" | jq '.url' -r)"
+               POL_Debug_Message "Wine address found: $WINE_ADDRESS"
+               #WINE_ADDRESS=$($POL_WGET "$WINE_SITE/$WINE_SECTION.lst" -O- | 
grep ";$POL_WINEVERSION;" | tail -n 1 | cut -d ";" -f1)
+
                if [ "$WINE_ADDRESS" = "" ] && [ "$POL_ARCH" = "amd64" ]
                then
                        POL_Debug_Warning "Wine $1 amd64 does not exist. 
Switching to x86"
@@ -685,11 +706,12 @@
                        fi
 
                        cd "$POL_USER_ROOT/tmp"
-                       POL_SetupWindow_download "$(eval_gettext "Downloading 
Wine: ")$POL_WINEVERSION" "$TITLE" "$WINE_SITE/$WINE_SECTION/$WINE_ADDRESS"
+                       
filename="$PWD/PlayOnLinux-wine-$POL_WINEVERSION-$POL_WINEDISTRIBUTION-$ARCH_PREFIX-$POL_ARCH.tar.gz"
+                       POL_SetupWindow_download "$(eval_gettext "Downloading 
Wine: ")$POL_WINEVERSION" "$TITLE" "$WINE_ADDRESS"
                        POL_SetupWindow_wait_next_signal "$(eval_gettext 
"Downloading Wine: ")$POL_WINEVERSION" "$TITLE"
                        sleep 1
-                       sha1=$($POL_WGET 
"$WINE_SITE/$WINE_SECTION/$WINE_ADDRESS.sha1" -O- | awk '{print $1}')
-                       sha1_file=$(shasum "./$WINE_ADDRESS" | awk '{print $1}')
+                       sha1="$(echo "$WINEDATA" | jq '.sha1sum' -r)"
+                       sha1_file=$(shasum "$filename" | awk '{print $1}')
                        echo "Server sha1 : $sha1"
                        echo "Client sha1 : $sha1_file"
 
@@ -698,16 +720,19 @@
                                POL_SetupWindow_message "$(eval_gettext 'The 
download seems to have failed.')" "$TITLE"
                        else
                                POL_SetupWindow_wait "$(eval_gettext 
'Extracting Wine...')" "$TITLE"
-                               bash "$PLAYONLINUX/playonlinux-pkg" -i 
"$PWD/$WINE_ADDRESS"
+                               mkdir -p 
"$POL_USER_ROOT/wine/$ARCH_PREFIX-$POL_ARCH/$POL_WINEVERSION_INSTALL"
+                               cd 
"$POL_USER_ROOT/wine/$ARCH_PREFIX-$POL_ARCH/$POL_WINEVERSION_INSTALL"
+                               tar -xvf "$filename"
                        fi
-                       rm "$WINE_ADDRESS"
-                       POL_Wine_Install_resources gecko "$POL_WINEVERSION" 
"$POL_ARCH"
-                       POL_Wine_Install_resources mono "$POL_WINEVERSION" 
"$POL_ARCH"
+                       rm "$filename"
+                       # POL_Wine_Install_resources gecko "$POL_WINEVERSION" 
"$POL_ARCH"
+                       # POL_Wine_Install_resources mono "$POL_WINEVERSION" 
"$POL_ARCH"
                fi
        fi
        rm "$WINEDIR/installing"
-       
+
 }
+
 POL_Wine_InstallCDROM()
 {
        POL_Wine_InstallCDROMCustom "$1" "$CDROM"
@@ -753,7 +778,7 @@
                resourceamd64="$(cut -d ';' -f3 <<< $found)"
                md5x86="$(cut -d ';' -f4 <<< $found)"
                md5amd64="$(cut -d ';' -f5 <<< $found)"
-               
+
                cd "$resource_dir"
                if [ "$resourcex86" ]; then
                        if [ -e "$resourcex86" ]; then
@@ -763,7 +788,7 @@
                                POL_Download "$(resource_download_url $resource 
x86 $resourcex86)" "$md5x86"
                        fi
                fi
-               
+
                if [ "$arch" = "amd64" ]; then
                        if [ "$resourceamd64" ]; then
                                if [ -e "$resourceamd64" ]; then
@@ -832,6 +857,8 @@
                                POL_Wine_InstallVersion "$POL_WINEVERSION"
                        fi
                        export PATH="$WINEDIR/$POL_WINEVERSION/bin/:$PATH"
+                       export 
DYLD_FALLBACK_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/"
+                       export 
FREETYPE_PROPERTIES="truetype:interpreter-version=35"
                        export 
LD_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/:$WINEDIR/$POL_WINEVERSION/lib64/:$LD_LIBRARY_PATH"
                        [ "$POL_OS" = "FreeBSD" ] && export 
LD_32_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/:$LD_32_LIBRARY_PATH"
                fi
@@ -886,7 +913,7 @@
        else
                POL_Debug_Message "No version specified. Using system version 
($(wine --version))"
        fi
-       
+
        POL_Debug_Message "Creating prefix ($POL_WINEVERSION)..."
        [ "$POL_ARCH" = "" ] && POL_System_SetArch "auto"
        [ "$WINEPREFIX" = "" ] && POL_Debug_Fatal "WINEPREFIX is not set!"
@@ -951,10 +978,10 @@
                                fi
                                POL_Debug_Message "Setting WINEARCH to 
$WINEARCH"
                        fi
-                       
+
                        wine wineboot
                        POL_Debug_InitPrefix
-                       
+
                        if [ -e "$WINEPREFIX/drive_c/windows/syswow64" ] # It 
is a 64 bits prefix
                        then
                                POL_Config_PrefixWrite "ARCH" "amd64"
@@ -973,9 +1000,9 @@
                        POL_Config_PrefixWrite "ARCH" "$POL_ARCH"
                        POL_Config_PrefixWrite "VERSION" "$POL_WINEVERSION"
                        POL_Wine_AutoSetVersionEnv
-                       
+
                        POL_Debug_InitPrefix
-                       
+
                        which wineprefixcreate && [ "$(POL_MD5_file "$(which 
wineprefixcreate)")" != "5c0ee90682746e811698a53415b4765d" ] && [ ! "$(which 
wineprefixcreate | grep $APPLICATION_TITLE)" = "" ] && wine wineprefixcreate
                        wine wineboot
                fi
@@ -1110,28 +1137,28 @@
        # Lock bash commands until wine is exited
        # Usage : POL_Wine_WaitBefore [Program title] (--allow-kill)
        SOFTNAME="$1"
-       if [ "$2" = "--allow-kill" ] 
+       if [ "$2" = "--allow-kill" ]
        then
                allowKill="true"
        else
                allowKill="false"
        fi
-       
+
        [ "$1" = "" ] && message="$(eval_gettext "Please wait...")" || 
message="$(eval_gettext 'Please wait while $SOFTNAME is installed...')"
-       
+
        if [ "$allowKill" = "true" ]
        then
                POL_SetupWindow_wait_button "$message" "$TITLE" "$(eval_gettext 
'Install is done')" "wineserver -k" "$(eval_gettext 'Be careful! This will kill 
install process. If it is not finished, you will have to reinstall $SOFTNAME')"
        else
                POL_SetupWindow_wait "$message" "$TITLE"
        fi
-       
+
 }
 POL_Wine_WaitExit ()
 {
        # Lock bash commands until wine is exited
        # Usage : POL_Wine_WaitExit (--force-input) [Program title] 
(--allow-kill)
-       if [ "$1" = "--force-input" ] 
+       if [ "$1" = "--force-input" ]
        then
                forceInput="true"
                shift
@@ -1140,13 +1167,13 @@
        fi
 
        SOFTNAME="$1"
-       if [ "$2" = "--allow-kill" ] 
+       if [ "$2" = "--allow-kill" ]
        then
                allowKill="true"
        else
                allowKill="false"
        fi
-       
+
        [ "$1" = "" ] && message="$(eval_gettext "Please wait...")" || 
message="$(eval_gettext 'Please wait while $SOFTNAME is installed...')"
        if [ "$allowKill" = "true" ]
        then
@@ -1177,11 +1204,11 @@
 }
 POL_Wine_GetBaseName()
 {
-       perl -e '$release=$ARGV[0]; $release =~ 
s/^([0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?)-?.*$/$1/; print "$release\n"' "$1"   
+       perl -e '$release=$ARGV[0]; $release =~ 
s/^([0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?)-?.*$/$1/; print "$release\n"' "$1"
 }
 POL_Wine_GetPatchName()
 {
-       perl -e '$release=$ARGV[0]; $release =~ 
s/^[0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?-?//; print "$release\n"' "$1"  
+       perl -e '$release=$ARGV[0]; $release =~ 
s/^[0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?-?//; print "$release\n"' "$1"
 }
 POL_Lnk_Read()
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/python/guiv3.py 
new/playonlinux/python/guiv3.py
--- old/playonlinux/python/guiv3.py     2017-06-19 21:03:38.000000000 +0200
+++ new/playonlinux/python/guiv3.py     2018-11-20 23:04:47.000000000 +0100
@@ -23,7 +23,7 @@
 import lib.Variables as Variables
 import lib.lng, lib.playonlinux as playonlinux
 lib.lng.Lang()
-urllib.URLopener.version = Variables.userAgent # Arg ... 
+urllib.URLopener.version = Variables.userAgent # Arg ...
 
 class Download(threading.Thread):
     def __init__(self, url, local):
@@ -45,7 +45,7 @@
     def download(self):
         try:
             urllib.urlretrieve(self.url, self.local, reporthook = self.onHook)
-        except:
+        except Exception as e:
             self.failed = True
         self.finished = True
 
@@ -83,7 +83,7 @@
         if(Arg3 == "protect"):
             self.ProtectedWindow = True
         self.oldfichier = ""
-        
+
         self.make_gui()
 
         wx.EVT_CLOSE(self, self.Cancel)
@@ -101,7 +101,7 @@
         self.panel = wx.Panel(self, -1, pos=(0,0), size=((520, 
398+Variables.windows_add_size)))
         self.header = wx.Panel(self.panel, -1, style=Variables.widget_borders, 
size=(522,65))
         self.header.SetBackgroundColour((255,255,255))
-        self.footer = wx.Panel(self.panel, -1, size=(522,45), pos=(-1,358), 
style=Variables.widget_borders)
+        self.footer = wx.Panel(self.panel, -1, size=(522,45), pos=(-1,358))
 
         # Panels
         self.MainPanel = wx.Panel(self.panel, -1, pos=(150,0), size=(370,356))
@@ -123,7 +123,7 @@
         self.titre = wx.StaticText(self.header, -1, "",pos=(20,30), 
size=(340,356),style=wx.ST_NO_AUTORESIZE)
         self.titre.SetForegroundColour((0,0,0)) # For dark themes
 
-        self.texteP = wx.StaticText(self.MainPanel, -1, "",pos=(5,50))
+        self.texteP = wx.StaticText(self.MainPanel, -1, 
"",pos=(5,50),size=(340, 500))
         self.texteP.SetForegroundColour((0,0,0)) # For dark themes
 
         self.titreP = wx.StaticText(self.MainPanel, -1,"",pos=(5,5), 
size=(340,356))
@@ -135,7 +135,7 @@
 
 
         # Buttons
-        
+
 
         if(os.environ["POL_OS"] != "Mac"):
             self.CancelButton = wx.Button(self.footer, wx.ID_CANCEL, 
_("Cancel"), pos=(430,0),size=(85,37))
@@ -143,11 +143,11 @@
         else:
             self.CancelButton = wx.Button(self.footer, wx.ID_CANCEL, 
_("Cancel"), pos=(420,-3),size=(85,37))
             self.NextButton = wx.Button(self.footer, wx.ID_FORWARD, _("Next"), 
pos=(330,-3),size=(85,37))
-   
+
         if(self.ProtectedWindow == True):
             self.CancelButton.Enable(False)
-   
-            
+
+
         self.InfoScript = wx.StaticBitmap(self.footer, -1, 
wx.Bitmap(os.environ['PLAYONLINUX']+"/resources/images/setups/about.png"), 
pos=(10,8))
         self.InfoScript.Hide()
         self.script_ID = 0
@@ -165,8 +165,8 @@
             self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), 
pos=(340,0), size=(85,37))
         else:
             self.NoButton = wx.Button(self.footer, wx.ID_NO, _("No"), 
pos=(420,-3),size=(85,37))
-            self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), 
pos=(330,-3), size=(85,37))           
-        
+            self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), 
pos=(330,-3), size=(85,37))
+
         self.browse = wx.Button(self.panel, 103, _("Browse"), size=(130,40))
         self.browse_text = wx.StaticText(self.panel, -1, "")
         self.browse_image = wx.StaticBitmap(self.panel, -1, 
wx.Bitmap(os.environ['PLAYONLINUX']+"/etc/playonlinux.png"))
@@ -186,16 +186,16 @@
         self.gauge = wx.Gauge(self.panel, -1, 50, size=(375, 20))
         self.WaitButton = wx.Button(self.panel, 310, "", size=(250,25))
 
-        
-        
+
+
         self.animation = wx.StaticBitmap(self.panel, -1, 
self.GetLoaderFromAngle(1), (228,170))
         self.current_angle = 1
-    
+
         self.images = wx.ImageList(22, 22)
         self.MenuGames = wx.TreeCtrl(self.panel, 111, 
style=wx.TR_HIDE_ROOT|wx.TR_FULL_ROW_HIGHLIGHT|Variables.widget_borders, 
pos=(25,105),size=(460,220))
         self.MenuGames.SetImageList(self.images)
         self.MenuGames.SetSpacing(0)
-        
+
 
         # Login
         self.login = wx.StaticText(self.panel, -1, _("Login: 
"),pos=(20,120),size=(460,20))
@@ -223,19 +223,19 @@
         self.Result = ""
         self.animation.Show()
         self.footer.Hide()
-        
+
         # Set the timer
         self.timer = wx.Timer(self, 3)
         self.Bind(wx.EVT_TIMER, self.TimerAction, self.timer)
         self.timer.Start(100)
         self.Timer_downloading = False
         self.Timer_animate = True
-        
+
     def GetLoaderFromAngle(self, angle):
         if(angle >= 1 and angle <= 12):
             image = 
wx.Image(Variables.playonlinux_env+"/resources/images/setups/wait/"+str(angle)+".png")
         return image.ConvertToBitmap()
-        
+
     def Destroy_all(self):
         self.footer.Show()
         self.Result = None
@@ -280,13 +280,13 @@
         self.debugZone.Hide()
         self.Refresh()
 
-        
+
     def getResult(self):
         if(self.Result == None):
             return False
         else:
             return self.Result
-            
+
     def TimerAction(self, event):
         ## If the setup window is downloading a file, it is a good occasion to 
update the progress bar
         if(self.Timer_downloading == True):
@@ -298,12 +298,12 @@
                 # may be -1 on older FTP servers which do not return a file 
size in response to a retrieval request
                 if self.downloader.taille_fichier >= 0:
                     self.gauge.SetRange(self.downloader.taille_fichier)
-                
+
                     try:
                         self.gauge.SetValue(downloaded)
                     except wx._core.PyAssertionError:
                         pass
-                    
+
                     tailleFichierB = self.downloader.taille_fichier / 1048576.0
                     tailleFichierN = str(round(tailleFichierB, 1))
                 else:
@@ -322,7 +322,7 @@
         if(self.Timer_animate == True):
             self.current_angle = ((self.current_angle + 1) % 12)
             
self.animation.SetBitmap(self.GetLoaderFromAngle(self.current_angle + 1))
-            
+
     ### Theses methods command the window. There are called directly by the 
server
     def POL_SetupWindow_message(self, message, title):
         self.Destroy_all()
@@ -347,7 +347,7 @@
 
         wx.EVT_BUTTON(self, wx.ID_FORWARD, self.release)
         self.DrawImage()
-    
+
     def POL_SetupWindow_SetID(self, script_id):
         self.InfoScript.Show()
         self.script_ID = script_id
@@ -407,7 +407,7 @@
         self.texte_bis.Show()
         self.SendBash()
 
-    def POL_SetupWindow_download(self, message, title, url, localfile): 
+    def POL_SetupWindow_download(self, message, title, url, localfile):
         self.Destroy_all()
         self.DrawDefault(message, title)
         self.space = message.count("\\n")+1
@@ -436,20 +436,20 @@
         self.DrawDefault(message, title)
 
         self.NextButton.Enable(False)
-        
+
         self.space = message.count("\\n")+1
         self.gauge.SetPosition((70,95+self.space*16))
         self.gauge.Show()
-        
+
         self.DrawCancel()
         self.DrawNext()
         self.NextButton.Enable(False)
         self.SendBash()
-        
+
     def POL_SetupWindow_wait_b(self, message, title, button_value, command, 
alert):
-        self.POL_SetupWindow_wait(message, title)    
+        self.POL_SetupWindow_wait(message, title)
         self.WaitButton.Show()
-        self.WaitButton.SetLabel(button_value) 
+        self.WaitButton.SetLabel(button_value)
         self.space = message.count("\\n")+1
         self.WaitButton.SetPosition((135,115+self.space*16))
         self.Bind(wx.EVT_BUTTON, lambda event:
@@ -667,7 +667,7 @@
             self.texte_panel.SetLabel(open(filetoread,"r").read())
         except:
             self.texte_panel.SetLabel("E. File not found")
-            
+
         self.texte_panel.Wrap(400)
         self.texte_panel.Show()
 
@@ -749,7 +749,7 @@
             self.release_yes(event)
         else:
             self.release_no(event)
-        
+
     def release_login(self, event):
         
self.SendBash(self.loginbox.GetValue().encode("utf-8","replace")+"~"+self.passbox.GetValue().encode("utf-8","replace"))
         self.NextButton.Enable(False)
@@ -781,7 +781,7 @@
             self.SendBash("Ok")
         self.NextButton.Enable(False)
 
-    def release_menugame(self,event):     
+    def release_menugame(self,event):
         
self.SendBash(self.MenuGames.GetItemText(self.MenuGames.GetSelection()).encode("utf-8","replace"))
         self.NextButton.Enable(False)
 
@@ -837,7 +837,7 @@
     def add_menu_icons(self, items, cut, icon_list, icon_folder):
         elements = items.split(cut)
         icons = icon_list.split(cut)
-        
+
         #self.games.sort()
         self.images.RemoveAll()
         self.MenuGames.DeleteAllItems()
@@ -876,12 +876,12 @@
         if(self.FileDialog.GetPath() != ""):
             filePath = self.FileDialog.GetPath().encode("utf-8","replace")
             filePathBaseName = filePath.split("/")[filePath.count("/")]
-            self.champ.SetValue(filePath) 
+            self.champ.SetValue(filePath)
             self.NextButton.Enable(True)
             self.browse_text.Show()
             self.browse_text.SetLabel(filePathBaseName)
             
self.browse_text.SetPosition(((520-self.browse_text.GetSize()[0])/2,180))
-            
+
             if(".exe" in filePathBaseName and os.path.getsize(filePath) <= 
30*1024*1024):
                 try:
                     tmpPath = 
os.environ['POL_USER_ROOT']+"/tmp/browse"+self.bash_pid+".png"
@@ -896,11 +896,11 @@
                     browse_image = 
wx.Image(os.environ['PLAYONLINUX']+"/etc/playonlinux.png")
             else:
                 browse_image = 
wx.Image(os.environ['PLAYONLINUX']+"/etc/playonlinux.png")
-            
+
             if(browse_image.GetWidth() >= 48):
                 browse_image.Rescale(48,48,wx.IMAGE_QUALITY_HIGH)
             browse_image = browse_image.ConvertToBitmap()
-    
+
             self.browse_image.SetBitmap(browse_image)
             
self.browse_image.SetPosition(((520-self.browse_image.GetSize()[0])/2,220))
             self.browse_image.Show()
@@ -937,4 +937,3 @@
             self.MenuGames.Show()
             self.Menu.Hide()
         self.Refresh()
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/python/lib/Variables.py 
new/playonlinux/python/lib/Variables.py
--- old/playonlinux/python/lib/Variables.py     2017-06-19 21:03:38.000000000 
+0200
+++ new/playonlinux/python/lib/Variables.py     2018-11-20 23:04:47.000000000 
+0100
@@ -4,6 +4,7 @@
 
 import os, random, sys, string
 import wx, lib.playonlinux as playonlinux
+from lib.dpiFetcher import dpiFetcher
 
 # Un ptit check
 try:
@@ -16,9 +17,8 @@
 os.environ["POL_PORT"] = "0"
 os.environ["PLAYONLINUX"] = 
os.path.realpath(os.path.realpath(__file__)+"/../../../")
 os.environ["SITE"] = "http://repository.playonlinux.com";
-os.environ["VERSION"] = "4.2.12"
+os.environ["VERSION"] = "4.3.3"
 os.environ["POL_ID"] = str(random.randint(1, 100000000))
-os.environ["WINE_SITE"] = "http://wine.playonlinux.com/binaries";
 os.environ["GECKO_SITE"] = "http://wine.playonlinux.com/gecko";
 os.environ["MONO_SITE"] = "http://wine.playonlinux.com/mono";
 homedir = os.environ["HOME"]
@@ -33,25 +33,27 @@
     os.environ["PLAYONMAC"] = os.environ["PLAYONLINUX"]
     os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/Library/PlayOnMac/"
     os.environ["APPLICATION_TITLE"] = "PlayOnMac"
+    os.environ["WINE_SITE"] = 
"https://phoenicis.playonlinux.com/index.php/wine?os=darwin";
     os.environ["POL_DNS"] = "playonmac.com"
     windows_add_size = 20;
     windows_add_playonmac = 1;
     widget_borders = wx.SIMPLE_BORDER
     os_name = "darwin"
-    os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q"
+    os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q 
--no-check-certificate"
 
 # Variables PlayOnLinux
 if os.environ["POL_OS"] == "Linux":
     os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/.PlayOnLinux/"
     os.environ["APPLICATION_TITLE"] = "PlayOnLinux"
     os.environ["POL_DNS"] = "playonlinux.com"
+    os.environ["WINE_SITE"] = 
"https://phoenicis.playonlinux.com/index.php/wine?os=linux";
     if playonlinux.VersionLower(wx.VERSION_STRING, "3.0.0"):
         windows_add_size = 0
         windows_add_playonmac = 0
     else:
-        windows_add_size = 25
+        windows_add_size = dpiFetcher().fetch_extra_pixel()
         windows_add_playonmac = 0
-        
+
     widget_borders = wx.RAISED_BORDER
     os_name = "linux"
     try:
@@ -64,10 +66,11 @@
             os.environ["POL_WGET"] = "env LD_LIBRARY_PATH=\"\" wget -q"
         else:
             os.environ["POL_WGET"] = "env LD_LIBRARY_PATH=\"\" wget 
--prefer-family=IPv4 -q"
-            
+
 if os.environ["POL_OS"] == "FreeBSD":
     os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/.PlayOnBSD/"
     os.environ["APPLICATION_TITLE"] = "PlayOnBSD"
+    os.environ["WINE_SITE"] = 
"https://phoenicis.playonlinux.com/index.php/wine?os=freebsd";
     os.environ["POL_DNS"] = "playonlinux.com"
     windows_add_size = 0
     windows_add_playonmac = 0
@@ -77,14 +80,14 @@
         os.environ["POL_WGET"] = "wget -q"
     else:
         os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q"
-        
-        
+
+
 os.environ["POL_CURL"] = "curl"
 
 archi = string.split(os.environ["MACHTYPE"], "-")
 archi = archi[0]
 
-if archi == "x86_64" and os.environ["POL_OS"] == "Linux":
+if archi == "x86_64":
     os.environ["AMD64_COMPATIBLE"] = "True"
 else:
     os.environ["AMD64_COMPATIBLE"] = "False"
@@ -134,7 +137,7 @@
     os.environ["LD_32_PATH_ORIGIN"] = os.environ["LD_32_LIBRARY_PATH"]
 except KeyError:
     os.environ["LD_32_PATH_ORIGIN"] = ""
-    
+
 os.environ["DYLDPATH_ORIGIN"] = os.environ["DYLD_LIBRARY_PATH"]
 
 playonlinux_env = os.environ["PLAYONLINUX"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/python/lib/dpiFetcher.py 
new/playonlinux/python/lib/dpiFetcher.py
--- old/playonlinux/python/lib/dpiFetcher.py    1970-01-01 01:00:00.000000000 
+0100
+++ new/playonlinux/python/lib/dpiFetcher.py    2018-11-20 23:04:47.000000000 
+0100
@@ -0,0 +1,16 @@
+import subprocess
+
+class dpiFetcher():
+    def fetchDPI(self):
+        try:
+            process = subprocess.Popen("xrdb -query|grep Xft.dpi|awk '{print 
$2}'", stdout=subprocess.PIPE, shell=True)
+            (output, err) = process.communicate()
+            return int(output)
+        except ValueError:
+            return 96
+
+    # Should be fixed as possible...
+    def fetch_extra_pixel(self):
+        factor = self.fetchDPI() / 96
+        print(factor)
+        return 68.75 * factor - 50
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/python/mainwindow.py 
new/playonlinux/python/mainwindow.py
--- old/playonlinux/python/mainwindow.py        2017-06-19 21:03:38.000000000 
+0200
+++ new/playonlinux/python/mainwindow.py        2018-11-20 23:04:47.000000000 
+0100
@@ -87,7 +87,7 @@
                     self.sendPercentage(int(line))
                 except ValueError:
                     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)
@@ -116,8 +116,8 @@
     def __init__(self, frame):
         wx.aui.AuiManager.__init__(self, frame)
         self.startPerspective = self.SavePerspective()
-        
-        
+
+
     def _getPerspectiveName(self):
         name = self.SavePerspective().split("=")
         name = name[1].split(";")
@@ -126,15 +126,15 @@
 
     def getPerspective(self):
         return 
self.SavePerspective().replace(self._getPerspectiveName(),"PERSPECTIVE_NAME")
-        
+
     def savePosition(self):
         playonlinux.SetSettings("PANEL_PERSPECTIVE", self.getPerspective())
-        
+
     def restorePosition(self):
         self.startPerspective = self.SavePerspective()
-       
+
         self.Update()
-        
+
         try:
             setting = playonlinux.GetSettings("PANEL_PERSPECTIVE")
             if(setting.count("Actions") < 2 or setting.count("dock_size") < 2 
or not "PERSPECTIVE_NAME" in setting):
@@ -143,19 +143,19 @@
                 setting = 
setting.replace("PERSPECTIVE_NAME",self._getPerspectiveName())
                 if(setting != ""):
                      self.LoadPerspective(setting)
-        
+
         except wx._core.PyAssertionError:
             self.LoadPerspective(self.startPerspective)
-        
-        
+
+
         self.Update()
-         
+
     def AddPane(self, data, settings):
         wx.aui.AuiManager.AddPane(self, data, settings)
-        
+
     def Destroy(self):
         self.savePosition()
-        
+
 class MainWindow(wx.Frame):
     def __init__(self,parent,id,title):
 
@@ -171,7 +171,7 @@
         self.updater = POLWeb()
         self.updater.start()
 
-        # These lists contain the dock links and images 
+        # These lists contain the dock links and images
         self.menuElem = {}
         self.menuImage = {}
 
@@ -230,9 +230,9 @@
         self._mgr = PanelManager(self)
         self._mgr.AddPane(self.list_game, wx.CENTER)
         self._mgr.AddPane(self.menu_gauche, 
wx.aui.AuiPaneInfo().Name('Actions').Caption('Actions').Left().BestSize((200,400)).Floatable(True).CloseButton(False).TopDockable(False).BottomDockable(False))
-        
-         
-        
+
+
+
         self.filemenu = wx.Menu()
         ### On MacOS X, preference is always on the main menu
         if(os.environ["POL_OS"] == "Mac"):
@@ -275,7 +275,7 @@
 
         self.expertmenu.Append(108, _("Run a local script"))
         self.expertmenu.Append(109, _("{0} 
console").format(os.environ["APPLICATION_TITLE"]))
-        
+
         self.expertmenu.Append(115, _('Close all {0} 
software').format(os.environ["APPLICATION_TITLE"]))
         self.expertmenu.AppendSeparator()
 
@@ -337,7 +337,7 @@
 
         self.option_item_p = wx.MenuItem(self.pluginsmenu, 214, _("Plugin 
manager"))
         
self.option_item_p.SetBitmap(wx.Bitmap(Variables.playonlinux_env+"/etc/onglet/package-x-generic.png"))
-        
+
         self.pluginsmenu.AppendItem(self.option_item_p)
 
 
@@ -370,7 +370,7 @@
         self.menubar.Append(self.help_menu, "&Help")
 
         #self.menubar.Append(self.help_menu, _("About"))
-        
+
         self.SetMenuBar(self.menubar)
         iconSize = (32,32)
 
@@ -386,7 +386,7 @@
         self.toolbar.AddSeparator()
         self.toolbar.AddLabelTool(121, _("Configure"), 
wx.Bitmap(Variables.playonlinux_env+"/resources/images/toolbar/configure.png"))
 
-        try: 
+        try:
                 self.toolbar.AddStretchableSpace()
                 self.SpaceHack = False
         except:
@@ -452,14 +452,14 @@
         wx.EVT_MENU(self, 402, self.runSupport)
         wx.EVT_MENU(self, 403, self.runSupport)
         wx.EVT_MENU(self, 404, self.runSupport)
-        
+
         # PlayOnLinux main timer
         self.timer = wx.Timer(self, 1)
         self.Bind(wx.EVT_TIMER, self.TimerAction, self.timer)
         self.timer.Start(1000)
         self.Timer_LastShortcutList = None
         self.Timer_LastIconList = None
-  
+
         # SetupWindow timer. The server is in another thread and GUI must be 
run from the main thread
         self.SetupWindowTimer = wx.Timer(self, 2)
         self.Bind(wx.EVT_TIMER, self.SetupWindowAction, self.SetupWindowTimer)
@@ -482,7 +482,7 @@
     def ResizeWindow(self, e):
         self.UpdateGaugePos()
         self.UpdateSearchHackSize()
-       
+
     def UpdateSearchHackSize(self):
         if(self.SpaceHack == True):
             self.dirtyHack.SetLabel("")
@@ -500,7 +500,7 @@
         while(self.SetupWindowTimer_action != None):
             time.sleep(0.1)
         self.SetupWindowTimer_action = recvData
-        
+
     def SetupWindow_TimerRestart(self, time):
         if(time != self.SetupWindowTimer_delay):
             self.SetupWindowTimer.Stop()
@@ -518,7 +518,7 @@
 
     def TimerAction(self, event):
         self.StatusRead()
-        
+
         # We read shortcut folder to see if it has to be rescanned
         currentShortcuts = 
os.path.getmtime(Variables.playonlinux_rep+"/shortcuts")
         currentIcons = os.path.getmtime(Variables.playonlinux_rep+"/icones/32")
@@ -572,7 +572,7 @@
                 self.installFrame.Refresh()
             except:
                 pass
-                
+
         if(self.updater.sendAlertStr != self.sendAlertStr):
             wx.MessageBox(self.updater.sendAlertStr, 
os.environ["APPLICATION_TITLE"], wx.OK|wx.CENTER, self)
             self.sendAlertStr = self.updater.sendAlertStr
@@ -648,26 +648,26 @@
             url = urlPrefix+"/forums.html"
         if(urlId == 4):
             url = urlPrefix+"/bugs.html"
-        
+
         if(urlId == 5):
             if(os.environ["POL_OS"] == "Mac"):
                 url = "https://twitter.com/PlayOnMac";
             else:
                 url = "https://twitter.com/PlayOnLinux";
-                
+
         if(urlId == 6):
             if(os.environ["POL_OS"] == "Mac"):
                 url = "http://plus.google.com/u/0/105992880311102680198";
             else:
                 url = "https://plus.google.com/+playonlinux";
-            
+
         if(urlId == 7):
             if(os.environ["POL_OS"] == "Mac"):
                 url = "https://www.facebook.com/playonmac";
             else:
                 url = "https://www.facebook.com/playonlinux";
-            
-        
+
+
         playonlinux.POL_Open(url)
 
     def iconDisplay(self, event):
@@ -779,13 +779,13 @@
             self.menuGaucheAddLink("pol_prgm_kill", _("Close"), 
i,Variables.playonlinux_env+"/resources/images/menu/media-playback-stop.png",self.RKill)
             i+=1
             self.menuGaucheAddLink("pol_prgm_rundebug", _("Debug"), 
i,Variables.playonlinux_env+"/resources/images/menu/bug.png",self.RunDebug)
-            
+
             game_exec = self.GetSelectedProgram()
             game_log = playonlinux.getLog(game_exec)
             if(game_log):
                 i+=1
                 self.menuGaucheAddLink("pol_prgm_reportproblem", _("Send a 
feedback"), 
i,Variables.playonlinux_env+"/resources/images/menu/bug.png",self.sendfeedback)
-                
+
             i+=1
             self.menuGaucheAddLink("pol_prgm_configure", _("Configure"), 
i,Variables.playonlinux_env+"/resources/images/menu/run.png",self.Configure)
             i+=1
@@ -860,8 +860,8 @@
         #self.menuElem[id].SetNormalColour(wx.Colour(0,0,0))
         #self.menuElem[id].SetVisitedColour(wx.Colour(0,0,0))
         #self.menuElem[id].SetHoverColour(wx.Colour(100,100,100))
-        
-            
+
+
         if(evt != None):
             wx.lib.hyperlink.EVT_HYPERLINK_LEFT(self, 10000+pos, evt)
 
@@ -874,12 +874,12 @@
     def Reload(self, event):
         self.games = os.listdir(Variables.playonlinux_rep+"shortcuts/")
         self.games.sort(key=str.upper)
-        
+
         try:
             self.games.remove(".DS_Store")
         except:
             pass
-            
+
         self.list_game.DeleteAllItems()
         self.images.RemoveAll()
         root = self.list_game.AddRoot("")
@@ -903,7 +903,7 @@
                         self.images.Add(self.bitmap)
                     except:
                         pass
-                    
+
                     item = self.list_game.AppendItem(root, game, self.i)
                     self.i += 1
         self.generate_menu(None)
@@ -1020,7 +1020,7 @@
 
     def GetSelectedProgram(self):
         return 
self.list_game.GetItemText(self.list_game.GetSelection()).encode("utf-8","replace")
-        
+
     def Run(self, event, s_debug=False):
 
         game_exec = self.GetSelectedProgram()
@@ -1109,7 +1109,7 @@
             
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.POLDie()
@@ -1147,7 +1147,7 @@
 
         subprocess.call(["bash", Variables.playonlinux_env+"/bash/startup"])
         self.systemCheck()
-        
+
         for f in  sys.argv[1:]:
             self.MacOpenFile(f)
             if(".exe" in f or ".EXE" in f):
@@ -1165,7 +1165,7 @@
         # Gui Server
         self.POLServer = gui_server.gui_server(self.frame)
         self.POLServer.start()
-        
+
         i = 0
         while(os.environ["POL_PORT"] == "0"):
             time.sleep(0.01)
@@ -1173,12 +1173,12 @@
                  wx.MessageBox(_("{0} is not able to start PlayOnLinux Setup 
Window server.").format(os.environ["APPLICATION_TITLE"]),_("Error"))
                  os._exit(0)
                  break
-            i+=1 
+            i+=1
         subprocess.Popen(["bash", Variables.playonlinux_env + 
"/bash/startup_after_server"])
-   
+
         self.SetTopWindow(self.frame)
         self.frame.Show(True)
-        
+
         return True
 
     def _executableFound(self, executable):
@@ -1263,7 +1263,7 @@
         self.singleCheckFatal("convert", package="ImageMagick")
         self.singleCheckFatal("wget", package="Wget")
         self.singleCheckFatal("curl", package="cURL")
-        
+
         self.singleCheckFatal("gpg", package="GnuPG")
 
         # FIXME: now that PoL can use a range of terminal emulators, xterm is 
no longer
@@ -1275,10 +1275,11 @@
         self.singleCheck("wrestool", package="icoutils")
         self.singleCheck("wine", package="Wine")
         self.singleCheck("unzip", package="InfoZIP")
+        self.singleCheck("jq", package="jq")
         self.singleCheck("7z", package="P7ZIP full")  # p7zip-full on Debian
         if(os.environ["POL_OS"] == "FreeBSD"):
             self.singleCheck("gsed", package="GNU Sed")
-            
+
     def BringWindowToFront(self):
         try: # it's possible for this event to come when the frame is closed
             self.GetTopWindow().Raise()
@@ -1314,7 +1315,7 @@
                 subprocess.Popen(["bash", Variables.playonlinux_env + 
"/bash/playonlinux-pkg", "-i", filename])
         else:
             playonlinux.open_document(filename,file_extension.lower())
- 
+
     def MacOpenURL(self, url):
         if(os.environ["POL_OS"] == "Mac" and not "playonmac://" in url):
             wx.MessageBox(_("You are trying to open a script design for {0}! 
It might not work as expected").format("PlayOnLinux or PlayOnBSD"), 
os.environ["APPLICATION_TITLE"])
@@ -1322,7 +1323,7 @@
             wx.MessageBox(_("You are trying to open a script design for {0}! 
It might not work as expected").format("PlayOnMac or PlayOnBSD"), 
os.environ["APPLICATION_TITLE"])
         if(os.environ["POL_OS"] == "FreeBSD" and not "playonbsd://" in url):
             wx.MessageBox(_("You are trying to open a script design for {0}! 
It might not work as expected").format("PlayOnMac or PlayOnLinux"), 
os.environ["APPLICATION_TITLE"])
-            
+
         subprocess.Popen(["bash", Variables.playonlinux_env + 
"/bash/playonlinux-url_handler", url])
 
     def MacReopenApp(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/playonlinux/python/wine_versions.py 
new/playonlinux/python/wine_versions.py
--- old/playonlinux/python/wine_versions.py     2017-06-19 21:03:38.000000000 
+0200
+++ new/playonlinux/python/wine_versions.py     2018-11-20 23:04:47.000000000 
+0100
@@ -18,7 +18,7 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-import wxversion, os, getopt, sys, urllib, signal, socket, codecs, string, 
shutil, time, urllib, urllib2
+import wxversion, os, getopt, sys, urllib, signal, socket, codecs, string, 
shutil, time, urllib, urllib2, json
 import subprocess
 import wx, wx.animate
 
@@ -125,34 +125,42 @@
         self.thread_running = True
         while(self.thread_running):
             if(self.thread_message == "get"):
-                wfolder = os_pref+"-"+self.architecture
                 try :
+                    url = os.environ["WINE_SITE"]
+                    wfolder = "-".join([os_pref, self.architecture])
+
 
-                    url = os.environ["WINE_SITE"]+"/"+wfolder+".lst"
-                    
-                    #print(url)
-        
                     req = urllib2.Request(url, None, {'User-Agent': 
Variables.userAgent})
                     handle = urllib2.urlopen(req, timeout = 5)
                     time.sleep(1)
-                    available_versions = handle.read()
-                    available_versions = string.split(available_versions,"\n")
-
-                    self.i = 0
+                    available_distributions = json.loads(handle.read())
                     self.versions_ = []
-                    while(self.i < len(available_versions) - 1):
-                        informations = 
string.split(available_versions[self.i], ";")
-                        version = informations[1]
-                        package = informations[0]
-                        sha1sum = informations[2]
-                        if(not 
os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version)):
-                            self.versions_.append(version)
-                        self.i += 1
+                    for distribution in available_distributions:
+                        if(distribution["name"] == "-".join(["upstream", 
os_pref, self.architecture])):
+                            for package in distribution["packages"]:
+                                version = package["version"]
+                                packageUrl = package["url"]
+                                sha1sum = package["sha1sum"]
+                                if(not 
os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version)):
+                                    self.versions_.append(version)
+                                else:
+                                    print("Directory: %s exists" % 
(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version))
+                        elif(distribution["name"] == "-".join(["staging", 
os_pref, self.architecture])):
+                            for package in distribution["packages"]:
+                                version = package["version"]
+                                if(not 
os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version+"-staging")):
+                                    self.versions_.append(version+"-staging")
+                                else:
+                                    print("Directory: %s exists" % 
(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version+"-staging"))
+                        else:
+                            print(distribution["name"] + " does not match")
+
+                    self.versions_.sort(key=keynat)
                     self.versions_.reverse()
                     self.versions = self.versions_[:]
-
                     self.thread_message = "Ok"
-                except :
+                except Exception, e:
+                    print(e)
                     time.sleep(1)
                     self.thread_message = "Err"
                     self.versions = ["Wine packages website is unavailable"]
@@ -197,14 +205,14 @@
         self.list_ver_installed[arch].SetSpacing(0);
         wx.StaticText(self.panelFenp[arch], -1, _("Installed Wine versions: 
"),(395,10))
         wx.StaticText(self.panelFenp[arch], -1, _("Available Wine versions: 
"),(5,10))
-        
+
         if(os.environ["POL_OS"] == "Mac"):
             self.button_rm[arch] = wx.Button(self.panelFenp[arch], 108+add, 
"<", pos=(333, 175), size=(50,30))
             self.button_in[arch] = wx.Button(self.panelFenp[arch], 109+add, 
">", pos=(333, 125), size=(50,30))
         else:
             self.button_rm[arch] = wx.Button(self.panelFenp[arch], 108+add, 
"<", pos=(340, 175), size=(50,30))
             self.button_in[arch] = wx.Button(self.panelFenp[arch], 109+add, 
">", pos=(340, 125), size=(50,30))
-            
+
         self.button_rm[arch].Enable(False)
         self.button_in[arch].Enable(False)
         self.AddPage(self.panelFenp[arch], _("Wine versions")+" ("+arch+")", 
imageId=0)
@@ -334,7 +342,7 @@
             message += "\n" + _('This version is CURRENTLY IN USE')
         if(wx.YES == wx.MessageBox(message.decode("utf-8","replace"), 
os.environ["APPLICATION_TITLE"], style=wx.YES_NO | wx.ICON_QUESTION)):
             
shutil.rmtree(Variables.playonlinux_rep+"/wine/"+os_pref+"-"+arch+"/"+version)
-            
+
     def install32(self, event):
         self.install_common(event, "x86")
 
@@ -395,7 +403,7 @@
 
         root2 = self.onglets.list_ver_installed[arch].AddRoot("")
         wfolder = os_pref+"-"+arch
-        
+
         used_version = self.checkVersionUse(arch) # Get the set of wine 
version used by wineprefix
 
         installed_versions = 
os.listdir(Variables.playonlinux_rep+"/wine/"+wfolder)


Reply via email to