summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/core/LinHES-config/LinHES-release2
-rwxr-xr-xabs/core/LinHES-config/PKGBUILD10
-rwxr-xr-xabs/core/LinHES-config/xconfig.sh160
-rwxr-xr-xabs/core/LinHES-system/PKGBUILD8
-rwxr-xr-x[-rw-r--r--]abs/core/LinHES-system/lh_system_backup_job0
-rwxr-xr-x[-rw-r--r--]abs/core/LinHES-system/lh_system_restore_job12
-rw-r--r--abs/core/LinHES-system/myth_status.py7
-rw-r--r--abs/core/ca-certificates-cacert/LICENSE34
-rw-r--r--abs/core/ca-certificates-cacert/PKGBUILD26
-rw-r--r--abs/core/ca-certificates-cacert/ca-certificates-cacert.install11
-rw-r--r--abs/core/ca-certificates/PKGBUILD65
-rw-r--r--abs/core/ca-certificates/ca-certificates-utils.install44
-rw-r--r--abs/core/ca-certificates/update-ca-trust37
-rw-r--r--abs/core/ca-certificates/update-ca-trust.8.txt75
-rw-r--r--abs/core/ca-certificates/update-ca-trust.hook11
-rwxr-xr-xabs/core/ceton_infinitv/PKGBUILD4
-rw-r--r--abs/core/curl/0001-connection_check-restore-original-conn-data-after-th.patch77
-rw-r--r--abs/core/curl/0001-connection_check-set-data-to-the-transfer-doing-the-.patch31
-rw-r--r--abs/core/curl/0001-multi-remove-verbose-Expire-in-messages.patch26
-rw-r--r--abs/core/curl/0001-singlesocket-fix-the-sincebefore-placement.patch52
-rw-r--r--abs/core/curl/PKGBUILD43
-rw-r--r--abs/core/ffmpeg/PKGBUILD125
-rw-r--r--abs/core/freetype2/0001-Enable-table-validation-modules.patch12
-rw-r--r--abs/core/freetype2/0001-psaux-Correctly-handle-Flex-features-52846.patch38
-rw-r--r--abs/core/freetype2/0002-Enable-infinality-subpixel-hinting.patch14
-rw-r--r--abs/core/freetype2/0003-Enable-long-PCF-family-names.patch14
-rw-r--r--abs/core/freetype2/PKGBUILD23
-rw-r--r--abs/core/gdk-pixbuf2/PKGBUILD55
-rw-r--r--abs/core/gdk-pixbuf2/gdk-pixbuf-query-loaders.hook11
-rw-r--r--abs/core/gdk-pixbuf2/gdk-pixbuf2.install10
-rw-r--r--abs/core/glib2/PKGBUILD101
-rw-r--r--abs/core/glib2/gio-querymodules.hook11
-rw-r--r--abs/core/glib2/glib-compile-schemas.hook12
-rw-r--r--abs/core/glib2/memleak.patch25
-rw-r--r--abs/core/glib2/noisy-glib-compile-schemas.diff24
-rw-r--r--abs/core/glib2/revert-warn-glib-compile-schemas.patch33
-rw-r--r--abs/core/gobject-introspection/PKGBUILD66
-rw-r--r--abs/core/intltool/PKGBUILD24
-rw-r--r--abs/core/intltool/intltool-0.51.0-perl-5.26.patch51
-rw-r--r--abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch38
-rw-r--r--abs/core/intltool/intltool_distcheck-fix.patch30
-rw-r--r--abs/core/libass/PKGBUILD12
-rw-r--r--abs/core/libdrm/PKGBUILD26
-rw-r--r--abs/core/libdrm/fix_mistake_in_initial_hole_size_calculation.diff39
-rw-r--r--abs/core/libdvdnav/PKGBUILD20
-rw-r--r--abs/core/libdvdnav/fix-crash-describe_title.patch29
-rw-r--r--abs/core/libdvdread/PKGBUILD16
-rw-r--r--abs/core/libglvnd/PKGBUILD7
-rw-r--r--abs/core/libglvnd/__changelog1
-rw-r--r--abs/core/libhdhomerun/PKGBUILD4
-rw-r--r--abs/core/libidn2/PKGBUILD15
-rw-r--r--abs/core/libpsl/PKGBUILD7
-rw-r--r--abs/core/libxml2/PKGBUILD19
-rw-r--r--abs/core/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch12
-rw-r--r--abs/core/libxslt/PKGBUILD7
-rw-r--r--abs/core/lighttpd/PKGBUILD6
-rwxr-xr-xabs/core/linhes-theme/PKGBUILD12
-rw-r--r--abs/core/linhes-theme/schedule-ui.xml.patch11
-rw-r--r--abs/core/linhes-theme/standardsetting-ui.xml13
-rw-r--r--abs/core/linhes-theme/video-ui.xml.patch11
-rw-r--r--abs/core/linux/PKGBUILD7
-rw-r--r--abs/core/linux/linux.install.pkg2
-rw-r--r--abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch12
-rw-r--r--abs/core/mesa/LICENSE87
-rw-r--r--abs/core/mesa/PKGBUILD232
-rw-r--r--abs/core/mesa/get-program-name-based-on-path.patch58
-rw-r--r--abs/core/mplayer/PKGBUILD10
-rwxr-xr-xabs/core/mythdb-initial/PKGBUILD8
-rw-r--r--abs/core/mythdb-initial/custom.sql4
-rw-r--r--abs/core/mythdb-initial/mc.sql13
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.cpp162
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.h83
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.cpp701
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.h274
-rwxr-xr-xabs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro19
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/settings.cpp1236
-rw-r--r--abs/core/mythinstall/MythVantage-app/mythinstall/settings.h835
-rw-r--r--abs/core/mythinstall/PKGBUILD10
-rw-r--r--abs/core/mythtv/stable-29/git_src/git_hash2
-rw-r--r--abs/core/mythtv/stable-29/mythplugins/PKGBUILD2
-rw-r--r--abs/core/mythtv/stable-29/mythtv/PKGBUILD2
-rwxr-xr-xabs/core/mythtv/stable-30/git_src/checkout_mythtv.sh40
-rwxr-xr-xabs/core/mythtv/stable-30/git_src/checkout_mythweb.sh38
-rw-r--r--abs/core/mythtv/stable-30/git_src/git_hash1
-rw-r--r--abs/core/mythtv/stable-30/git_src/git_hash_web1
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch50
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/PKGBUILD139
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/mythburn.cpp-python2.patch13
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/mythburn.py-aspectratio.patch138
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/mythmusic_en_us.ts_Title_Case.patch2895
-rw-r--r--abs/core/mythtv/stable-30/mythplugins/mythplugins-mythzoneminder.install11
-rw-r--r--abs/core/mythtv/stable-30/mythtv/0031-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch82
-rw-r--r--abs/core/mythtv/stable-30/mythtv/0227-OSD-Add-interlaced-status-to-OSD-debug-screen.patch19
-rw-r--r--abs/core/mythtv/stable-30/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch71
-rw-r--r--abs/core/mythtv/stable-30/mythtv/PKGBUILD144
-rw-r--r--abs/core/mythtv/stable-30/mythtv/addEnableDisableAutoShutdownToSystemMenu.patch50
-rw-r--r--abs/core/mythtv/stable-30/mythtv/addHostnameIPtoMachineStatus.patch88
-rw-r--r--abs/core/mythtv/stable-30/mythtv/autoskip_reduce_commskip_jumpback.patch13
-rw-r--r--abs/core/mythtv/stable-30/mythtv/change_msg_types.patch20
-rw-r--r--abs/core/mythtv/stable-30/mythtv/defaultThemeLinHES.patch11
-rw-r--r--abs/core/mythtv/stable-30/mythtv/disable_mythnotification_tuner_failure.patch43
-rw-r--r--abs/core/mythtv/stable-30/mythtv/fixTranslations.patch130
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/HOST_SETTINGS.xml114
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/dvd_backup.xml39
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/game.xml12
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/info_menu.xml76
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/is.xml3
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/lh_backend_control.xml24
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/library.xml.patch25
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/linhes.xml70
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/linhes_tools.xml31
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/mainmenu.xml.patch15
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/mythbackup.xml22
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/mythrestore.xml24
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/optical_menu.xml.patch23
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/original/create_patch.sh5
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/siriusmenu.xml.del419
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/update.xml11
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/update2.xml25
-rw-r--r--abs/core/mythtv/stable-30/mythtv/menu-xml/xmmenu.xml.del574
-rw-r--r--abs/core/mythtv/stable-30/mythtv/myth_settings.patch1960
-rw-r--r--abs/core/mythtv/stable-30/mythtv/mythfrontend_en_us.ts_Title_Case.patch29547
-rw-r--r--abs/core/mythtv/stable-30/mythtv/mythtv.install34
-rw-r--r--abs/core/mythtv/stable-30/mythtv/pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch39
-rw-r--r--abs/core/mythtv/stable-30/mythtv/recordings145
-rw-r--r--abs/core/mythtv/stable-30/mythtv/revertQTsettingsForMythinstall.patch1118
-rw-r--r--abs/core/mythtv/stable-30/mythtv/searchMetatdataSelectedGrabber.patch18
-rw-r--r--abs/core/mythtv/stable-30/mythtv/suggestedstarttime.patch.v132
-rw-r--r--abs/core/mythtv/stable-30/mythtv/videoAlwaysUseBookmark.patch22
-rw-r--r--abs/core/mythtv/stable-30/mythweb/Channel.php_remove_small_icons.patch14
-rw-r--r--abs/core/mythtv/stable-30/mythweb/PKGBUILD60
-rw-r--r--abs/core/mythtv/stable-30/mythweb/mythweb.include8
-rw-r--r--abs/core/mythtv/stable-30/mythweb/mythweb.install22
-rw-r--r--abs/core/mythtv/stable-30/mythweb/mythweb_gen_light.conf1
-rw-r--r--abs/core/mythtv/stable-30/mythweb/video.css.patch98
-rw-r--r--abs/core/nano/PKGBUILD7
-rw-r--r--abs/core/nasm/PKGBUILD29
-rw-r--r--abs/core/nasm/nasm.install20
-rw-r--r--abs/core/nvidia-304xx/PKGBUILD2
-rw-r--r--abs/core/nvidia-340xx-settings/PKGBUILD62
-rw-r--r--abs/core/nvidia-340xx-settings/libxnvctrl_so.patch56
-rw-r--r--abs/core/nvidia-340xx-utils/PKGBUILD15
-rw-r--r--abs/core/nvidia-340xx-utils/__changelog1
-rw-r--r--abs/core/nvidia-340xx/PKGBUILD6
-rw-r--r--abs/core/nvidia-390xx-settings/PKGBUILD64
-rw-r--r--abs/core/nvidia-390xx-settings/libxnvctrl_so.patch (renamed from abs/extra/nvidia-settings/libxnvctrl_so.patch)0
-rw-r--r--abs/core/nvidia-390xx-utils/PKGBUILD168
-rw-r--r--abs/core/nvidia-390xx-utils/nvidia-390xx-utils.install7
-rw-r--r--abs/core/nvidia-390xx-utils/nvidia-390xx-utils.sysusers1
-rw-r--r--abs/core/nvidia-390xx-utils/nvidia-drm-outputclass.conf15
-rw-r--r--abs/core/nvidia-390xx/PKGBUILD87
-rw-r--r--abs/core/nvidia-390xx/kernel-4.16.patch33
-rw-r--r--abs/core/nvidia-settings/PKGBUILD (renamed from abs/extra/nvidia-settings/PKGBUILD)5
-rw-r--r--abs/core/nvidia-settings/libxnvctrl_so.patch67
-rw-r--r--abs/core/nvidia-utils/PKGBUILD35
-rw-r--r--abs/core/nvidia/PKGBUILD21
-rw-r--r--abs/core/openssl-1.0/PKGBUILD5
-rw-r--r--abs/core/openssl/PKGBUILD22
-rw-r--r--abs/core/openssl/ca-dir.patch12
-rw-r--r--abs/core/pango/PKGBUILD45
-rw-r--r--abs/core/pango/pango.install8
-rw-r--r--abs/core/perl_modules/perl-font-ttf/PKGBUILD40
-rw-r--r--abs/core/perl_modules/perl-io-string/PKGBUILD28
-rw-r--r--abs/core/perl_modules/perl-sort-versions/PKGBUILD35
-rw-r--r--abs/core/python/PKGBUILD21
-rw-r--r--abs/core/python/__changelog1
-rw-r--r--abs/core/python_modules/python-anytree/PKGBUILD46
-rw-r--r--abs/core/python_modules/python-lxml/PKGBUILD9
-rw-r--r--abs/core/python_modules/python-pycryptodomex/PKGBUILD49
-rw-r--r--abs/core/python_modules/python-pygments/PKGBUILD5
-rw-r--r--abs/core/sudo/PKGBUILD5
-rwxr-xr-xabs/core/system-templates/PKGBUILD6
-rw-r--r--abs/core/system-templates/templates/remotes/favorites/streamzap/Lircmap.xml2
-rw-r--r--abs/core/system-templates/templates/remotes/favorites/streamzap/lircrc8
-rw-r--r--abs/core/system-templates/templates/xorg/340xx_supported.txt14
-rw-r--r--abs/core/system-templates/templates/xorg/390xx_supported.txt923
-rw-r--r--abs/core/system-templates/templates/xorg/nvidia_supported.txt623
-rw-r--r--abs/core/wget/PKGBUILD8
-rw-r--r--abs/core/wpa_supplicant/0009-WPA-Ignore-unauthenticated-encrypted-EAPOL-Key-data.patch44
-rw-r--r--abs/core/wpa_supplicant/PKGBUILD9
-rw-r--r--abs/core/x264/PKGBUILD82
-rw-r--r--abs/core/x265/PKGBUILD100
-rw-r--r--abs/core/xf86-video-intel/0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch93
-rw-r--r--abs/core/xf86-video-intel/PKGBUILD17
-rw-r--r--abs/extra/adobe-source-sans-pro-fonts/PKGBUILD21
-rw-r--r--abs/extra/ant/PKGBUILD82
-rw-r--r--abs/extra/ant/ant.conf8
-rw-r--r--abs/extra/aom/PKGBUILD48
-rw-r--r--abs/extra/apache-ant/PKGBUILD74
-rw-r--r--abs/extra/apache-ant/ant_diagnostics.patch23
-rw-r--r--abs/extra/apache-ant/apache-ant.csh1
-rw-r--r--abs/extra/apache-ant/apache-ant.sh1
-rw-r--r--abs/extra/appstream-glib/PKGBUILD42
-rw-r--r--abs/extra/bubblewrap/PKGBUILD36
-rw-r--r--abs/extra/cantarell-fonts/PKGBUILD37
-rw-r--r--abs/extra/ccache/PKGBUILD51
-rw-r--r--abs/extra/clang/PKGBUILD106
-rw-r--r--abs/extra/clang/enable-SSP-and-PIE-by-default.patch (renamed from abs/extra/llvm/0002-Enable-SSP-and-PIE-by-default.patch)118
-rw-r--r--abs/extra/compiler-rt/PKGBUILD47
-rw-r--r--abs/extra/docbook-xml/PKGBUILD361
-rw-r--r--abs/extra/docbook-xsl/765567_non-recursive_string_subst.patch32
-rw-r--r--abs/extra/docbook-xsl/PKGBUILD49
-rw-r--r--abs/extra/docbook-xsl/docbook-xsl.install18
-rw-r--r--abs/extra/dune/PKGBUILD38
-rw-r--r--abs/extra/egl-wayland/10_nvidia_wayland.json6
-rw-r--r--abs/extra/egl-wayland/PKGBUILD44
-rw-r--r--abs/extra/eglexternalplatform/PKGBUILD33
-rw-r--r--abs/extra/emacs-nox/0001-Ignore-color-fonts-when-using-Xft.patch72
-rw-r--r--abs/extra/emacs-nox/0001-Port-FC_COLOR-change-to-older-fontconfig.patch32
-rw-r--r--abs/extra/emacs-nox/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch25
-rw-r--r--abs/extra/emacs-nox/PKGBUILD55
-rw-r--r--abs/extra/emacs-nox/emacs-nox.changelog56
-rw-r--r--abs/extra/ffmpeg2.8/PKGBUILD4
-rw-r--r--abs/extra/ffnvcodec-headers/PKGBUILD26
-rw-r--r--abs/extra/fmt/PKGBUILD48
-rw-r--r--abs/extra/gcab/PKGBUILD36
-rw-r--r--abs/extra/glances/PKGBUILD4
-rw-r--r--abs/extra/google-chrome/.SRCINFO32
-rw-r--r--abs/extra/google-chrome/PKGBUILD4
-rwxr-xr-xabs/extra/google-chrome/update_version.sh31
-rw-r--r--abs/extra/gtk-doc/PKGBUILD46
-rw-r--r--abs/extra/gtk3/0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch85
-rw-r--r--abs/extra/gtk3/0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch94
-rw-r--r--abs/extra/gtk3/PKGBUILD106
-rw-r--r--abs/extra/gtk3/gtk-query-immodules-3.0.hook11
-rw-r--r--abs/extra/gtk3/gtk-update-icon-cache.hook13
-rw-r--r--abs/extra/gtk3/gtk-update-icon-cache.install3
-rw-r--r--abs/extra/gtk3/gtk-update-icon-cache.script10
-rw-r--r--abs/extra/gtk3/gtk3.install15
-rw-r--r--abs/extra/handbrake/PKGBUILD26
-rw-r--r--abs/extra/java-common/PKGBUILD24
-rwxr-xr-xabs/extra/java-common/bin_archlinux-java20
-rwxr-xr-xabs/extra/java-common/test_archlinux-java299
-rw-r--r--abs/extra/java-hamcrest/LICENSE.txt27
-rw-r--r--abs/extra/java-hamcrest/PKGBUILD38
-rw-r--r--abs/extra/java8-openjdk/PKGBUILD280
-rw-r--r--abs/extra/java8-openjdk/install_jdk8-openjdk.sh50
-rw-r--r--abs/extra/java8-openjdk/install_jre8-openjdk-headless.sh48
-rw-r--r--abs/extra/java8-openjdk/install_jre8-openjdk.sh42
-rw-r--r--abs/extra/json-glib/PKGBUILD48
-rw-r--r--abs/extra/junit/PKGBUILD16
-rw-r--r--abs/extra/kodi-addon-inputstream-adaptive/PKGBUILD27
-rw-r--r--abs/extra/kodi-addon-pvr-mythtv-git/PKGBUILD64
-rw-r--r--abs/extra/kodi-addon-pvr-mythtv-git/__changelog4
-rw-r--r--abs/extra/kodi-addon-pvr-mythtv-git/p8-platform.patch509
-rw-r--r--abs/extra/kodi-addon-pvr-mythtv/PKGBUILD41
-rw-r--r--abs/extra/kodi/10160.patch22
-rw-r--r--abs/extra/kodi/10775.patch839
-rw-r--r--abs/extra/kodi/9703.patch1432
-rw-r--r--abs/extra/kodi/PKGBUILD210
-rw-r--r--abs/extra/kodi/__changelog1
-rw-r--r--abs/extra/kodi/cheat-sse-build.patch11
-rw-r--r--abs/extra/kodi/cpuinfo4
-rw-r--r--abs/extra/kodi/fix-ftpparse.patch71
-rw-r--r--abs/extra/kodi/fix-python-lib-path.patch29
-rw-r--r--abs/extra/kodi/kodi.install1
-rw-r--r--abs/extra/libbluray/PKGBUILD35
-rw-r--r--abs/extra/libdvdcss/PKGBUILD13
-rw-r--r--abs/extra/libepoxy/PKGBUILD48
-rw-r--r--abs/extra/libepoxy/__changelog1
-rw-r--r--abs/extra/libsass/PKGBUILD28
-rw-r--r--abs/extra/libsoup/PKGBUILD46
-rw-r--r--abs/extra/libsoup/__changelog1
-rw-r--r--abs/extra/libstemmer/PKGBUILD55
-rw-r--r--abs/extra/libstemmer/dynamiclib.patch39
-rw-r--r--abs/extra/libva-intel-driver/427.patch65
-rw-r--r--abs/extra/libva-intel-driver/PKGBUILD43
-rw-r--r--abs/extra/libva/PKGBUILD60
-rw-r--r--abs/extra/libva/not-finding-wl-drm-interface-with-libglvnd.patch48
-rw-r--r--abs/extra/libvpx/PKGBUILD7
-rw-r--r--abs/extra/llvm/0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch37
-rw-r--r--abs/extra/llvm/PKGBUILD207
-rw-r--r--abs/extra/llvm/add-discriminator-to-debuginfo-test.patch25
-rw-r--r--abs/extra/llvm/disable-llvm-symbolizer-test.patch26
-rw-r--r--abs/extra/llvm/rusty-discriminator-thingy.patch57
-rw-r--r--abs/extra/mercurial/PKGBUILD62
-rw-r--r--abs/extra/mercurial/mercurial.profile1
-rw-r--r--abs/extra/meson/0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch30
-rw-r--r--abs/extra/meson/4878.patch26
-rw-r--r--abs/extra/meson/PKGBUILD41
-rw-r--r--abs/extra/meson/arch-meson28
-rw-r--r--abs/extra/ninja/PKGBUILD10
-rw-r--r--abs/extra/ocaml-ctypes/PKGBUILD7
-rw-r--r--abs/extra/ocaml-findlib/PKGBUILD19
-rw-r--r--abs/extra/ocaml-findlib/externalmeta6.patch13
-rw-r--r--abs/extra/ocaml-findlib/makefile.patch13
-rw-r--r--abs/extra/ocaml-integers/PKGBUILD30
-rw-r--r--abs/extra/ocaml-result/PKGBUILD32
-rw-r--r--abs/extra/ocaml-topkg/PKGBUILD28
-rw-r--r--abs/extra/ocaml/PKGBUILD7
-rw-r--r--abs/extra/ocamlbuild/PKGBUILD15
-rw-r--r--abs/extra/opam/PKGBUILD36
-rw-r--r--abs/extra/openpht/PKGBUILD2
-rw-r--r--abs/extra/plex-media-server/PKGBUILD6
-rw-r--r--abs/extra/rapidjson/PKGBUILD37
-rw-r--r--abs/extra/sassc/PKGBUILD29
-rw-r--r--abs/extra/screen/PKGBUILD70
-rw-r--r--abs/extra/screen/pam.d (renamed from abs/extra/screen/screen.pam)0
-rw-r--r--abs/extra/screen/screen-4.0.3-caption-colors.patch21
-rw-r--r--abs/extra/screen/screen-4.0.3-long-term.patch24
-rw-r--r--abs/extra/screen/screen.install21
-rw-r--r--abs/extra/screen/tmpfiles.d1
-rw-r--r--abs/extra/source-highlight/PKGBUILD14
-rw-r--r--abs/extra/source-highlight/fix-zsh-highlighting-hangups.patch13
-rw-r--r--abs/extra/ttf-google-fonts-git/PKGBUILD72
-rw-r--r--abs/extra/ttf-google-fonts-git/font.install15
-rw-r--r--abs/extra/wayland-protocols/PKGBUILD17
-rw-r--r--abs/extra/wayland/PKGBUILD47
-rw-r--r--abs/extra/yelp-tools/PKGBUILD33
309 files changed, 48625 insertions, 6369 deletions
diff --git a/abs/core/LinHES-config/LinHES-release b/abs/core/LinHES-config/LinHES-release
index 5afb5ff..203aeb3 100644
--- a/abs/core/LinHES-config/LinHES-release
+++ b/abs/core/LinHES-config/LinHES-release
@@ -1 +1 @@
-LinHES R8.5.2 (Gareth)
+LinHES R8.6.0 (Feeding the Kids)
diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 424d709..28fa7e3 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=LinHES-config
-pkgver=8.5.2
-pkgrel=3
+pkgver=8.6.0
+pkgrel=2
conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
pkgdesc="Install and configure your system"
depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -8,7 +8,7 @@ depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
'python2-pexpect' 'python-netifaces' 'xcursor-vanilla-dmz-aa'
'python-iplib' 'sudo' 'setserial' 'udevil' 'balance'
'mythinstall' 'runit-scripts>=8.3-4' )
-arch=('i686' 'x86_64')
+arch=('x86_64')
source=(mv_install.py 09_mythvantge_runit_grub
mv_config.py
@@ -156,11 +156,11 @@ md5sums=('49952a2375b8ee53d8673473f22f8d12'
'27e4fcacca9b9662dd782fbdc92fceea'
'2a7f3b34e522acfd08283b86c8926aba'
'da60447a2a5fe0e6f5aaed2e677281ef'
- '4239a837227ff97a24c5335de47ce029'
+ '29558e4560a305239ae126880b3af810'
'f0376c98a7986897406d393186c0365e'
'157e73d0f90d7b306aba8f5921aeedd3'
'1f58c0393a131f4a8f9a84b3fe08a7e4'
- '03ab4c6af061da01584b450ec83f26ed'
+ '4dd17c4e1ad6047872fab3a37e9997ed'
'5f890ea9bda6aef652d2560ca19dac07'
'ab2aa42c2947148c2b1cac0ade6d1d55'
'd429b59d3cfb37b0624c6a4a71a7c2c0'
diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh
index 5514b00..f730f95 100755
--- a/abs/core/LinHES-config/xconfig.sh
+++ b/abs/core/LinHES-config/xconfig.sh
@@ -2,29 +2,43 @@
#set -x
#SET DISPLAYRES to force Xres, ENV takes precendent over cmdline
#SET VGACARDTYPE to force card type:
+ #VGACARDTYPE="ati" xconfig.sh
#VGACARDTYPE="intel" xconfig.sh
#VGACARDTYPE="nvidia" xconfig.sh
+ #VGACARDTYPE="nvidia-390xx" xconfig.sh
#VGACARDTYPE="nvidia-340xx" xconfig.sh
#VGACARDTYPE="nvidia-304xx" xconfig.sh
- #VGACARDTYPE="VMware" xconfig.sh
#VGACARDTYPE="vesa" xconfig.sh
+ #VGACARDTYPE="VMware" xconfig.sh
LOGFILE=/tmp/xconfig.log
echo -e "\n\n--------------------------------------------------------------------------------" >> $LOGFILE 2>&1
echo -e `date`"\n" >> $LOGFILE 2>&1
-for i in ati intel mga savage sis unichrome
+#libxnvctrl is needed as a dep of mythtv so must be installed for every driver
+ATI_PKGS="xf86-video-ati libglvnd libxnvctrl"
+INTEL_PKGS="xf86-video-intel libglvnd libxnvctrl"
+NVIDIA_PKGS="nvidia nvidia-utils opencl-nvidia nvidia-settings libglvnd libxnvctrl"
+NVIDIA_390xx_PKGS="nvidia-390xx nvidia-390xx-utils opencl-nvidia-390xx nvidia-390xx-settings libglvnd libxnvctrl-390xx"
+NVIDIA_340xx_PKGS="nvidia-340xx nvidia-340xx-utils opencl-nvidia-340xx nvidia-340xx-settings libglvnd libxnvctrl-340xx"
+NVIDIA_304xx_PKGS="nvidia-304xx nvidia-304xx-utils opencl-nvidia-304xx libglvnd libxnvctrl-340xx"
+NVIDIA_ALL_PKGS=`echo $NVIDIA_PKGS $NVIDIA_390xx_PKGS $NVIDIA_340xx_PKGS $NVIDIA_304xx_PKGS|xargs -n1|sort -u`
+VESA_PKGS="xf86-video-vesa libglvnd libxnvctrl"
+VMWARE_PKGS="xf86-input-vmmouse xf86-video-vmware xf86-video-vesa svga-dri libglvnd libxnvctrl"
+
+for i in ati intel mga savage sis unichrome vmware
do
templist=`echo $i-dri xf86-video-$i`
- NVPKGS=`echo $NVPKGS $templist`
+ OTHER_PKGS=`echo $OTHER_PKGS $templist`
done
BASE=""
MYTH_RUN_STATUS="1"
. /etc/profile
-NVIDIA_304xx="$TEMPLATES/xorg/304xx_supported.txt"
-NVIDIA_340xx="$TEMPLATES/xorg/340xx_supported.txt"
+NVIDIA_304xx_SUPPORTED="$TEMPLATES/xorg/304xx_supported.txt"
+NVIDIA_340xx_SUPPORTED="$TEMPLATES/xorg/340xx_supported.txt"
+NVIDIA_390xx_SUPPORTED="$TEMPLATES/xorg/340xx_supported.txt"
NVIDIA_SUPPORTED="$TEMPLATES/xorg/nvidia_supported.txt"
NVIDIA_DISABLE_MSI="$TEMPLATES/xorg/nvidia_disable_msi.txt"
NVIDIA_MSI_MODPROBE="$BASE/etc/modprobe.d/nvidia_msi.conf"
@@ -77,12 +91,13 @@ function presetupX {
function nvidia_prepare {
[[ -f "$NVIDIA_MSI_MODPROBE" ]] && rm -f "$NVIDIA_MSI_MODPROBE"
- for i in libva-intel-driver mesa-libgl nvidia nvidia-utils nvidia-libgl opencl-nvidia nvidia-settings libxnvctrl libglvnd nvidia-304xx nvidia-304xx-utils nvidia-304xx-libgl opencl-nvidia-304xx nvidia-340xx nvidia-340xx-utils nvidia-340xx-libgl opencl-nvidia-340xx
+ echo "Remove all nvidia pkgs" >> $LOGFILE 2>&1
+ for i in ${NVIDIA_ALL_PKGS}
do
pacman --noconfirm -Rdd $i >> $LOGFILE 2>&1
done
- for i in `echo ${NVPKGS}`
+ for i in ${OTHER_PKGS}
do
pacman --noconfirm -Rc $i >> $LOGFILE 2>&1
done
@@ -108,40 +123,63 @@ function nvidia_driver_install {
if [[ $? = 0 || $VGAFORCED -eq 1 && $VGACARDTYPE == "nvidia" ]]
then
echo "$CARDNAME" | tee -a $LOGFILE
- LIST="nvidia nvidia-utils opencl-nvidia nvidia-settings libglvnd"
- for i in `echo ${LIST}`
+ for i in ${NVIDIA_PKGS}
do
pkg_check $i
done
echo "Installing current nvidia driver" | tee -a $LOGFILE
nvidia_prepare
- pacman --noconfirm -S ${LIST} >> $LOGFILE 2>&1
+ pacman --noconfirm -S ${NVIDIA_PKGS} >> $LOGFILE 2>&1
if [[ $? != 0 ]]
then
echo "ERROR: Unable to install current nvidia driver" | tee -a $LOGFILE
else
+ echo " Successfully Installed" | tee -a $LOGFILE
INSTALLED=1
fi
fi
if [ $INSTALLED -eq 0 ]
then
- CARDNAME=`grep -i "$CARDID" "$NVIDIA_340xx"`
+ CARDNAME=`grep -i "$CARDID" "$NVIDIA_390xx_SUPPORTED"`
+ if [[ $? = 0 || $VGAFORCED -eq 1 && $VGACARDTYPE == "nvidia-390xx" ]]
+ then
+ echo "$CARDNAME" | tee -a $LOGFILE
+ for i in ${NVIDIA_390xx_PKGS}
+ do
+ pkg_check $i
+ done
+ echo "Installing nvidia-390xx driver" | tee -a $LOGFILE
+ nvidia_prepare
+ pacman --noconfirm -S ${NVIDIA_390xx_PKGS} >> $LOGFILE 2>&1
+ if [[ $? != 0 ]]
+ then
+ echo "ERROR: Unable to install nvidia-390xx driver" | tee -a $LOGFILE
+ else
+ echo " Successfully Installed" | tee -a $LOGFILE
+ INSTALLED=1
+ fi
+ fi
+ fi
+
+ if [ $INSTALLED -eq 0 ]
+ then
+ CARDNAME=`grep -i "$CARDID" "$NVIDIA_340xx_SUPPORTED"`
if [[ $? = 0 || $VGAFORCED -eq 1 && $VGACARDTYPE == "nvidia-340xx" ]]
then
echo "$CARDNAME" | tee -a $LOGFILE
- LIST="nvidia-340xx nvidia-340xx-utils opencl-nvidia-340xx libglvnd"
- for i in `echo ${LIST}`
+ for i in ${NVIDIA_340xx_PKGS}
do
pkg_check $i
done
echo "Installing nvidia-340xx driver" | tee -a $LOGFILE
nvidia_prepare
- pacman --noconfirm -S ${LIST} >> $LOGFILE 2>&1
+ pacman --noconfirm -S ${NVIDIA_340xx_PKGS} >> $LOGFILE 2>&1
if [[ $? != 0 ]]
then
echo "ERROR: Unable to install nvidia-340xx driver" | tee -a $LOGFILE
else
+ echo " Successfully Installed" | tee -a $LOGFILE
INSTALLED=1
fi
fi
@@ -149,22 +187,22 @@ function nvidia_driver_install {
if [ $INSTALLED -eq 0 ]
then
- CARDNAME=`grep -i "$CARDID" "$NVIDIA_304xx"`
+ CARDNAME=`grep -i "$CARDID" "$NVIDIA_304xx_SUPPORTED"`
if [[ $? = 0 || $VGAFORCED -eq 1 && $VGACARDTYPE == "nvidia-304xx" ]]
then
echo "$CARDNAME" | tee -a $LOGFILE
- LIST="nvidia-304xx nvidia-304xx-utils opencl-nvidia-304xx libglvnd"
- for i in `echo ${LIST}`
+ for i in ${NVIDIA_304xx_PKGS}
do
pkg_check $i
done
echo "Installing nvidia-304xx driver" | tee -a $LOGFILE
nvidia_prepare
- pacman --noconfirm -S ${LIST} >> $LOGFILE 2>&1
+ pacman --noconfirm -S ${NVIDIA_304xx_PKGS} >> $LOGFILE 2>&1
if [[ $? != 0 ]]
then
echo "ERROR: Unable to install nvidia-304xx driver" | tee -a $LOGFILE
else
+ echo " Successfully Installed" | tee -a $LOGFILE
INSTALLED=1
fi
fi
@@ -173,25 +211,23 @@ function nvidia_driver_install {
if [ $INSTALLED -eq 0 ]
then
#this is a failsafe, can't find the right driver, then use the latest'
- echo " Couldn't find the card id in any list" | tee -a $LOGFILE
- LIST="nvidia nvidia-utils opencl-nvidia nvidia-settings libglvnd"
- for i in `echo ${LIST}`
+ echo "Couldn't find the card ID. Installing current nvidia driver" | tee -a $LOGFILE
+ for i in ${NVIDIA_PKGS}
do
pkg_check $i
done
echo "Installing current nvidia driver" | tee -a $LOGFILE
nvidia_prepare
- pacman --noconfirm -S ${LIST} >> $LOGFILE 2>&1
+ pacman --noconfirm -S ${NVIDIA_PKGS} >> $LOGFILE 2>&1
if [[ $? != 0 ]]
then
echo "ERROR: Unable to install current nvidia driver" | tee -a $LOGFILE
else
+ echo " Successfully Installed" | tee -a $LOGFILE
INSTALLED=1
fi
fi
- echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG"
-
if [ $INSTALLED -eq 1 ]
then
grep -qi "$CARDID" "$NVIDIA_DISABLE_MSI"
@@ -204,37 +240,71 @@ function nvidia_driver_install {
}
function vmware_driver_install {
- LIST="xf86-input-vmmouse xf86-video-vmware xf86-video-vesa svga-dri libglvnd"
- for i in `echo ${LIST}`
+ for i in ${VMWARE_PKGS}
do
pkg_check $i
done
echo "Installing VMware driver" | tee -a $LOGFILE
#this is used to remove nvidia
nvidia_prepare
- for i in `echo ${LIST}`
- do
- pacman -S --noconfirm $i >> $LOGFILE 2>&1
- done
+ pacman --noconfirm -S ${VMWARE_PKGS} >> $LOGFILE 2>&1
+ if [[ $? != 0 ]]
+ then
+ echo "ERROR: Unable to install VMware driver" | tee -a $LOGFILE
+ else
+ echo " Successfully Installed" | tee -a $LOGFILE
+ fi
}
function vesa_driver_install {
- pkg_check xf86-video-vesa
- pkg_check libglvnd
+ for i in ${VESA_PKGS}
+ do
+ pkg_check $i
+ done
echo "Installing Vesa driver" | tee -a $LOGFILE
#this is used to remove nvidia
nvidia_prepare
- pacman -S --noconfirm xf86-video-vesa libglvnd >> $LOGFILE 2>&1
+ pacman --noconfirm -S ${VESA_PKGS} >> $LOGFILE 2>&1
+ if [[ $? != 0 ]]
+ then
+ echo "ERROR: Unable to install vesa driver" | tee -a $LOGFILE
+ else
+ echo " Successfully Installed" | tee -a $LOGFILE
+ fi
}
function intel_driver_install {
- pkg_check xf86-video-intel
- pkg_check libglvnd
+ for i in ${INTEL_PKGS}
+ do
+ pkg_check $i
+ done
echo "Installing Intel driver" | tee -a $LOGFILE
#this is used to remove nvidia
nvidia_prepare
- pacman -S --noconfirm xf86-video-intel libva-intel-driver libglvnd >> $LOGFILE 2>&1
- echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG"
+ pacman --noconfirm -S ${INTEL_PKGS} >> $LOGFILE 2>&1
+ if [[ $? != 0 ]]
+ then
+ echo "ERROR: Unable to install Intel driver" | tee -a $LOGFILE
+ else
+ echo " Successfully Installed" | tee -a $LOGFILE
+ fi
+}
+
+function ati_driver_install {
+ for i in ${ATI_PKGS}
+ do
+ pkg_check $i
+ done
+ echo "Installing ATI driver" | tee -a $LOGFILE
+ #this is used to remove nvidia
+ nvidia_prepare
+ pacman --noconfirm -S ${ATI_PKGS} >> $LOGFILE 2>&1
+ if [[ $? != 0 ]]
+ then
+ echo "ERROR: Unable to install ATI driver" | tee -a $LOGFILE
+ else
+ echo " Successfully Installed" | tee -a $LOGFILE
+ fi
}
function set_res {
@@ -258,7 +328,7 @@ function setupX {
if [ x = x ]
then
case $VGACARDTYPE in
- nvidia|nvidia-340xx|nvidia-304xx)
+ nvidia|nvidia-390xx|nvidia-340xx|nvidia-304xx)
nvidia_driver_install
if [[ $Xres != "Auto" ]]
then
@@ -298,6 +368,18 @@ function setupX {
fi
;;
+ ati)
+ ati_driver_install
+ #cp $TEMPLATES/xorg/xorg.ati /etc/X11/xorg.conf.d/20-automv.conf
+ if [[ $Xres != "Auto" ]]
+ then
+ set_res
+ else
+ echo "Setting resolution to ${Xres}" | tee -a $LOGFILE
+ rm -f /etc/X11/xorg.conf.d/30-screen.conf
+ fi
+ ;;
+
vesa|innotek|*) #leaving this as * and vesa for no real reason other then it's explicit to catch vesa
if [[ $VGACARDTYPE != "vesa" && $VGACARDTYPE != "innotek" ]]
then
@@ -387,8 +469,6 @@ fi
XORG_CONF="/etc/X11/xorg.conf"
-XVMC_CONFIG="/etc/X11/XvMCConfig"
-
pacman_wait
presetupX
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 348996b..a236769 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=LinHES-system
-pkgver=8.5.2
-pkgrel=3
+pkgver=8.6.0
+pkgrel=1
arch=('x86_64')
install=system.install
pkgdesc="Everything that makes LinHES an automated system"
@@ -91,7 +91,7 @@ md5sums=('c6e6b83a1f4c35ef4501e277657ab2ac'
'542e670e78d117657f93141e9689f54d'
'8da6a7f1703a002f84e66629e847d8a6'
'bb72ab230c7a71706285bd0f31a4fb1f'
- '14352e6d2cd3ed4206b1dff4ff35880d'
+ 'c25915a9c5382122f849a3a11b943010'
'962a3e9eaba2d1466251b7ab0956705d'
'1758aed160de64abfafb28a3a8f3390e'
'33fbebbd546672cedd3c5e7350ab414e'
@@ -99,7 +99,7 @@ md5sums=('c6e6b83a1f4c35ef4501e277657ab2ac'
'3edef50a49a47694bf8add39cc160add'
'01cbbf411d2a585feb71f2881755e5d8'
'f421f670a9c74724037f70d1dabcad00'
- 'bc69a520add58ede9b060c73e67ace13'
+ 'eab2d188992b1ac561e0ba968544d7a3'
'74e17d6f7453c52d56fecaed5c3f6ad5'
'47e093e8cfe4b5b96602358e1f540832'
'727a886a1ba237906f48cda2e4e7844b'
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index 8539ff2..8539ff2 100644..100755
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
diff --git a/abs/core/LinHES-system/lh_system_restore_job b/abs/core/LinHES-system/lh_system_restore_job
index da7dbca..f39aeaa 100644..100755
--- a/abs/core/LinHES-system/lh_system_restore_job
+++ b/abs/core/LinHES-system/lh_system_restore_job
@@ -17,8 +17,9 @@ function usage(){
echo "------------------------------------------------------"
echo "This program will restore the database from a system backup."
- echo "Files are expected to be in the $BACKUPDIR"
- echo "usage:"
+ echo "System backup files are expected to be in the $BACKUPDIR"
+ echo ""
+ echo "Usage:"
echo ""
echo "lh_system_restore_job \$filename [cleanup partial]"
echo ""
@@ -26,9 +27,10 @@ function usage(){
echo ""
echo ""
- echo "If the script is called with cleanup, it will cleanup the the restore dir."
- echo "If the script is called with restore, it will restore the dir, and then copy back some settings."
- echo " It's intended to be used with restoring R7 databases only"
+ echo "If the script is called with cleanup, it will cleanup the restore dir."
+ echo "If the script is called with partial, it will restore the db,"
+ echo " and then copy back some settings."
+ echo " partial is intended to be used to restore R7 databases only."
echo "------------------------------------------------------"
exit 1
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index cd541ca..63328d0 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -144,11 +144,12 @@ class tuner_recording_status:
a=self.be.getRecorderList()
for i in a:
outline=''
- cmd="select cardtype,hostname from capturecard where cardid=%s;" %i
+ cmd="select cardtype,hostname,displayname from capturecard where cardid=%s;" %i
self.cursor.execute(cmd)
results=self.cursor.fetchall()
type = results[0][0]
hostname = results[0][1]
+ displayname = results[0][2]
id = i
try:
c=self.be.getCurrentRecording(i)
@@ -156,10 +157,10 @@ class tuner_recording_status:
current_recording = "Idle"
else:
current_recording = "Recording %s" %c.title
- outline = " Tuner %s (%s) on %s : %s " %(id, type, hostname, current_recording)
+ outline = " Tuner %s - %s (%s) on %s : %s " %(id, displayname, type, hostname, current_recording)
self.tuner_status_list.append(outline)
except:
- outline = " Tuner %s (%s) on %s : %s " %(id, type, hostname, "Tuner Error")
+ outline = " Tuner %s - %s (%s) on %s : %s " %(id, displayname, type, hostname, "Tuner Error")
self.tuner_status_list.append(outline)
def get_tuner_status(self):
diff --git a/abs/core/ca-certificates-cacert/LICENSE b/abs/core/ca-certificates-cacert/LICENSE
deleted file mode 100644
index d62429c..0000000
--- a/abs/core/ca-certificates-cacert/LICENSE
+++ /dev/null
@@ -1,34 +0,0 @@
-Root Distribution License
-
-1. Terms
-
-"CAcert Inc" means CAcert Incorporated, a non-profit association incorporated in New South Wales, Australia.
-"CAcert Community Agreement" means the agreement entered into by each person wishing to RELY.
-"Member" means a natural or legal person who has agreed to the CAcert Community Agreement.
-"Certificate" means any certificate or like device to which CAcert Inc's digital signature has been affixed.
-"CAcert Root Certificates" means any certificate issued by CAcert Inc to itself for the purposes of signing further CAcert Roots or for signing certificates of Members.
-"RELY" means the human act in taking on a risk or liability on the basis of the claim(s) bound within a certificate issued by CAcert.
-"Embedded" means a certificate that is contained within a software application or hardware system, when and only when, that software application or system is distributed in binary form only.
-
-2. Copyright
-
-CAcert Root Certificates are Copyright CAcert Incorporated. All rights reserved.
-
-3. License
-
-You may copy and distribute CAcert Root Certificates only in accordance with this license.
-
-CAcert Inc grants you a free, non-exclusive license to copy and distribute CAcert Root Certificates in any medium, with or without modification, provided that the following conditions are met:
-
- - Redistributions of Embedded CAcert Root Certificates must take reasonable steps to inform the recipient of the disclaimer in section 4 or reproduce this license and copyright notice in full in the documentation provided with the distribution.
- - Redistributions in all other forms must reproduce this license and copyright notice in full.
-
-4. Disclaimer
-
-THE CACERT ROOT CERTIFICATES ARE PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED TO THE MAXIMUM EXTENT PERMITTED BY LAW. IN NO EVENT SHALL CACERT INC, ITS MEMBERS, AGENTS, SUBSIDIARIES OR RELATED PARTIES BE LIABLE TO THE LICENSEE OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE CERTIFICATES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IN ANY EVENT, CACERT'S LIABILITY SHALL NOT EXCEED $1,000.00 AUSTRALIAN DOLLARS.
-
-THIS LICENSE SPECIFICALLY DOES NOT PERMIT YOU TO RELY UPON ANY CERTIFICATES ISSUED BY CACERT INC. IF YOU WISH TO RELY ON CERTIFICATES ISSUED BY CACERT INC, YOU MUST ENTER INTO A SEPARATE AGREEMENT WITH CACERT INC.
-
-5. Statutory Rights
-
-Nothing in this license affects any statutory rights that cannot be waived or limited by contract. In the event that any provision of this license is held to be invalid or unenforceable, the remaining provisions of this license remain in full force and effect.
diff --git a/abs/core/ca-certificates-cacert/PKGBUILD b/abs/core/ca-certificates-cacert/PKGBUILD
deleted file mode 100644
index f8bfeff..0000000
--- a/abs/core/ca-certificates-cacert/PKGBUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-# $Id$
-# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-
-pkgname=ca-certificates-cacert
-pkgver=20140824
-pkgrel=2
-pkgdesc="CAcert.org root certificates"
-arch=(any)
-url="https://www.cacert.org/index.php?id=3"
-license=('custom:RDL')
-depends=(ca-certificates-utils)
-install=ca-certificates-cacert.install
-source=(CAcert.org_root.crt::http://www.cacert.org/certs/root.crt
- CAcert.org_class3.crt::http://www.cacert.org/certs/class3.crt
- LICENSE)
-sha256sums=('c0e0773a79dceb622ef6410577c19c1e177fb2eb9c623a49340de3c9f1de2560'
- 'f5badaa5da1cc05b110a9492455a2c2790d00c7175dcf3a7bcb5441af71bf84f'
- '2d9007a467e72d437ecfa13cc605c371e98a469f1aac4c890be74f953559833c')
-
-package() {
- local _certdir="$pkgdir/usr/share/ca-certificates/trust-source/anchors"
- install -d "$_certdir"
- install -t "$_certdir" -m644 *.crt
-
- install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
diff --git a/abs/core/ca-certificates-cacert/ca-certificates-cacert.install b/abs/core/ca-certificates-cacert/ca-certificates-cacert.install
deleted file mode 100644
index 433c35a..0000000
--- a/abs/core/ca-certificates-cacert/ca-certificates-cacert.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
- usr/bin/update-ca-trust
-}
-
-post_upgrade() {
- post_install
-}
-
-pre_remove() {
- post_install
-}
diff --git a/abs/core/ca-certificates/PKGBUILD b/abs/core/ca-certificates/PKGBUILD
index f377a79..1a7b291 100644
--- a/abs/core/ca-certificates/PKGBUILD
+++ b/abs/core/ca-certificates/PKGBUILD
@@ -1,50 +1,55 @@
-# $Id$
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgbase=ca-certificates
pkgname=(ca-certificates-utils ca-certificates)
-pkgver=20150402
+pkgver=20181109
pkgrel=1
-pkgdesc='Common CA certificates'
-arch=('any')
-url='http://pkgs.fedoraproject.org/cgit/ca-certificates.git'
-license=('GPL2')
-makedepends=('asciidoc' 'p11-kit')
-source=(update-ca-trust update-ca-trust.8.txt)
-sha256sums=('746d2cce8ec107fa3b7aaa246d69a7e238c3d2ac5cd82c5aeed996fe9cb0a874'
- '38c10446738c1e99bc95e42fe844a9e95ea106795059fa769f3b4ba82b395929')
+pkgdesc="Common CA certificates"
+url="https://src.fedoraproject.org/rpms/ca-certificates"
+arch=(any)
+license=(GPL2)
+makedepends=(asciidoc p11-kit)
+source=(update-ca-trust update-ca-trust.8.txt update-ca-trust.hook)
+sha256sums=('ba98e00f80f94e2648b66252119d1b0da2339b8c83860cd69738e5c4e2d0fcc3'
+ 'acf571f7d7a9df2149a373017280e8f22d07a2d36600256fa48159d22ab74751'
+ '15eb04e757b7c61c8ee1540fd697771b8ae8e31f92cfb39c260b423101e21af8')
build() {
- asciidoc.py -v -d manpage -b docbook update-ca-trust.8.txt
- xsltproc --nonet -o update-ca-trust.8 /etc/asciidoc/docbook-xsl/manpage.xsl update-ca-trust.8.xml
+ asciidoc.py -v -d manpage -b docbook update-ca-trust.8.txt
+ xsltproc --nonet -o update-ca-trust.8 /etc/asciidoc/docbook-xsl/manpage.xsl update-ca-trust.8.xml
}
package_ca-certificates-utils() {
- pkgdesc+=" (utilities)"
- depends=('bash' 'coreutils' 'findutils' 'p11-kit>=0.23.1')
- install=ca-certificates-utils.install
- provides=(ca-certificates ca-certificates-java)
- conflicts=(ca-certificates-java)
- replaces=(ca-certificates-java)
+ pkgdesc+=" (utilities)"
+ depends=('bash' 'coreutils' 'findutils' 'p11-kit>=0.23.1')
+ provides=(ca-certificates ca-certificates-java)
+ conflicts=(ca-certificates-java)
+ replaces=(ca-certificates-java)
- install -D update-ca-trust "${pkgdir}/usr/bin/update-ca-trust"
- install -Dm644 update-ca-trust.8 "${pkgdir}/usr/share/man/man8/update-ca-trust.8"
+ install -D update-ca-trust "$pkgdir/usr/bin/update-ca-trust"
+ install -Dm644 update-ca-trust.8 "$pkgdir/usr/share/man/man8/update-ca-trust.8"
+ install -Dm644 update-ca-trust.hook "$pkgdir/usr/share/libalpm/hooks/update-ca-trust.hook"
- # Trust source directories
- install -d "${pkgdir}"/{etc,usr/share}/${pkgbase}/trust-source/{anchors,blacklist}
+ # Trust source directories
+ install -d "$pkgdir"/{etc,usr/share}/$pkgbase/trust-source/{anchors,blacklist}
- # Directories used by update-ca-trust (aka "trust extract-compat")
- install -d "${pkgdir}"/etc/{ssl/certs/java,${pkgbase}/extracted}
+ # Directories used by update-ca-trust (aka "trust extract-compat")
+ install -d "$pkgdir"/etc/{ssl/certs/{edk2,java},$pkgbase/extracted}
- # Compatibility link for OpenSSL using /etc/ssl as CAdir
- # Used in preference to the individual links in /etc/ssl/certs
- ln -s ../${pkgbase}/extracted/tls-ca-bundle.pem "${pkgdir}/etc/ssl/cert.pem"
+ # Compatibility link for OpenSSL using /etc/ssl as CAdir
+ # Used in preference to the individual links in /etc/ssl/certs
+ ln -sr "$pkgdir/etc/$pkgbase/extracted/tls-ca-bundle.pem" "$pkgdir/etc/ssl/cert.pem"
+
+ # Compatiblity link for legacy bundle
+ ln -sr "$pkgdir/etc/$pkgbase/extracted/tls-ca-bundle.pem" "$pkgdir/etc/ssl/certs/ca-certificates.crt"
}
package_ca-certificates() {
- pkgdesc+=" (default providers)"
- depends=(ca-certificates-{mozilla,cacert})
+ pkgdesc+=" (default providers)"
+ depends=(ca-certificates-mozilla)
+ replaces=('ca-certificates-cacert<=20140824-4')
+ conflicts=('ca-certificates-cacert<=20140824-4')
}
-# vim:set noet ts=8 sw=8 sts=0:
+# vim:set et sw=2:
diff --git a/abs/core/ca-certificates/ca-certificates-utils.install b/abs/core/ca-certificates/ca-certificates-utils.install
deleted file mode 100644
index 8120878..0000000
--- a/abs/core/ca-certificates/ca-certificates-utils.install
+++ /dev/null
@@ -1,44 +0,0 @@
-export LC_ALL=C
-
-post_install() {
- usr/bin/update-ca-trust
-
- # This should be a normally packaged file, but that would
- # require user intervention at upgrade
- ln -srf etc/ca-certificates/extracted/tls-ca-bundle.pem \
- etc/ssl/certs/ca-certificates.crt
-}
-
-post_upgrade() {
- usr/bin/update-ca-trust
-
- if (( $(vercmp $2 20140923-7.1) < 0 )); then
- cat <<MSG
- The way local CA certificates are handled has changed.
- If you have added any certificates manually:
-
- 1. Move certificates from /usr/local/share/ca-certificates/
- to /etc/ca-certificates/trust-source/anchors/
- 2. Do the same with root certificates added to /etc/ssl/certs/
- 3. Instead of \`update-ca-certificates\`, run \`trust extract-compat\`
-
- Also see \`man 8 update-ca-trust\` and \`trust --help\`.
-MSG
- fi
-
- if (( $(vercmp $2 20150402) < 0 )); then
- ln -srf etc/ca-certificates/extracted/tls-ca-bundle.pem \
- etc/ssl/certs/ca-certificates.crt
-
- # Moved to etc/ca-certificates/extracted
- rm -f etc/ssl/certs/ca-bundle.trust.crt
- fi
-}
-
-pre_remove() {
- usr/bin/update-ca-trust
-
- rm -f etc/ssl/certs/{ca-certificates.crt,java/cacerts}
-}
-
-# vim:set noet ts=8 sw=8 sts=0:
diff --git a/abs/core/ca-certificates/update-ca-trust b/abs/core/ca-certificates/update-ca-trust
index 9a97e34..53441b3 100644
--- a/abs/core/ca-certificates/update-ca-trust
+++ b/abs/core/ca-certificates/update-ca-trust
@@ -1,27 +1,42 @@
#!/bin/bash
# At this time, while this script is trivial, we ignore any parameters given.
-# However, for backwards compatibility reasons, future versions of this script must
-# support the syntax "update-ca-trust extract" trigger the generation of output
+# However, for backwards compatibility reasons, future versions of this script must
+# support the syntax "update-ca-trust extract" trigger the generation of output
# files in $DEST.
DEST=/etc/ca-certificates/extracted
+# Prevent p11-kit from reading user configuration files.
+export P11_KIT_NO_USER_CONFIG=1
+
+extract() {
+ trust extract --overwrite "$@"
+}
+
+## Simple PEM bundles
+extract --comment --format=pem-bundle --filter=ca-anchors --purpose=server-auth $DEST/tls-ca-bundle.pem
+extract --comment --format=pem-bundle --filter=ca-anchors --purpose=email $DEST/email-ca-bundle.pem
+extract --comment --format=pem-bundle --filter=ca-anchors --purpose=code-signing $DEST/objsign-ca-bundle.pem
+
+## OpenSSL PEM bundle that includes trust flags
+extract --comment --format=openssl-bundle --filter=certificates $DEST/ca-bundle.trust.crt
+
+## TianoCore EDK II bundle
+extract --format=edk2-cacerts --filter=ca-anchors --purpose=server-auth $DEST/edk2-cacerts.bin
+
+## Java bundle
+extract --format=java-cacerts --filter=ca-anchors --purpose=server-auth /etc/ssl/certs/java/cacerts
+
+## OpenSSL-style directory with individual PEM files and hash links
# The directory-format extractors remove all files in the target directory, but not directories or files therein
-trust extract --overwrite --format=pem-directory-hash --filter=ca-anchors --purpose server-auth $DEST/cadir
-trust extract --overwrite --format=pem-bundle --filter=ca-anchors --purpose server-auth $DEST/tls-ca-bundle.pem
-trust extract --overwrite --format=pem-bundle --filter=ca-anchors --purpose email $DEST/email-ca-bundle.pem
-trust extract --overwrite --format=pem-bundle --filter=ca-anchors --purpose code-signing $DEST/objsign-ca-bundle.pem
-trust extract --overwrite --format=openssl-bundle --filter=certificates $DEST/ca-bundle.trust.crt
+extract --format=pem-directory-hash --filter=ca-anchors --purpose=server-auth $DEST/cadir
# We don't want to have to remove everything from the certs directory but neither
-# do we want to leave stale certs around, so symlink it all from somewhere else
+# do we want to leave stale certs around, so only place symlinks in the real cadir
for f in $DEST/cadir/*; do
ln -fsr -t /etc/ssl/certs "$f"
done
# Now find and remove all broken symlinks
find -L /etc/ssl/certs -maxdepth 1 -type l -delete
-
-# Java bundle
-trust extract --overwrite --format=java-cacerts --filter=ca-anchors --purpose server-auth /etc/ssl/certs/java/cacerts
diff --git a/abs/core/ca-certificates/update-ca-trust.8.txt b/abs/core/ca-certificates/update-ca-trust.8.txt
index 67e2ba3..ba9c830 100644
--- a/abs/core/ca-certificates/update-ca-trust.8.txt
+++ b/abs/core/ca-certificates/update-ca-trust.8.txt
@@ -74,11 +74,11 @@ will be scanned for any number of source files. *It is important to select
the correct subdirectory for adding files, as the subdirectory defines how
contained certificates will be trusted or distrusted, and which file formats are read.*
-Files in subdirectories below the directory hierarchy /usr/share/ca-certificates/trust-source/ contain CA certificates and
+Files in *subdirectories below the directory hierarchy /usr/share/ca-certificates/trust-source/* contain CA certificates and
trust settings in the PEM file format. The trust settings found here will be
interpreted with a *low priority*.
-Files in subdirectories below the directory hierarchy /etc/ca-certificates/trust-source/ contain CA certificates and
+Files in *subdirectories below the directory hierarchy /etc/ca-certificates/trust-source/* contain CA certificates and
trust settings in the PEM file format. The trust settings found here will be
interpreted with a *high priority*.
@@ -144,7 +144,7 @@ BEGIN/END CERTIFICATE and BEGIN/END TRUSTED CERTIFICATE file formats.
Applications that rely on a static file for a list of trusted CAs
may load one of the files found in the /etc/ssl/certs or /etc/ca-certificates/extracted
-directory. After modifying any file in the
+directories. After modifying any file in the
/usr/share/ca-certificates/trust-source/ or /etc/ca-certificates/trust-source/
directories or in any of their subdirectories, or after adding a file,
it is necessary to run the 'update-ca-trust extract' command,
@@ -161,7 +161,7 @@ the dynamically merged set of certificates and trust information stored in the
[[extractconf]]
EXTRACTED CONFIGURATION
-----------------------
-The directories /etc/ssl/certs and /etc/ca-certificates/extracted/ contains generated CA certificate
+The directories /etc/ssl/certs and /etc/ca-certificates/extracted/ contain generated CA certificate
bundle files which are created and updated, based on the <<sourceconf,SOURCE CONFIGURATION>>
by running the 'update-ca-trust extract' command.
@@ -189,8 +189,13 @@ and distrusted certificates are missing from these files.
File cacerts contains CA certificates trusted for TLS server authentication.
The directory /etc/ca-certificates/extracted contains
+a CA certificate bundle file in the extended BEGIN/END TRUSTED CERTIFICATE file format,
+as described in the x509(1) manual page.
+File ca-bundle.trust.crt contains the full set of all trusted
+or distrusted certificates, including the associated trust flags.
+It also contains
CA certificate bundle files in the simple BEGIN/END CERTIFICATE file format,
-as decribed in the x509(1) manual page.
+as described in the x509(1) manual page.
Distrust information cannot be represented in this file format,
and distrusted certificates are missing from these files.
File tls-ca-bundle.pem contains CA certificates
@@ -199,10 +204,14 @@ File email-ca-bundle.pem contains CA certificates
trusted for E-Mail protection.
File objsign-ca-bundle.pem contains CA certificates
trusted for code signing.
-File ca-bundle.trust.crt contains certificates in the extended
-BEGIN/END TRUSTED CERTIFICATE file format, as described in the x509(1) manual page.
-This bundle contains the full set of all trusted
-and distrusted certificates, including the associated trust flags.
+It also contains a CA
+certificate bundle ("edk2-cacerts.bin") in the "sequence of
+EFI_SIGNATURE_LISTs" format, defined in the UEFI-2.7 specification,
+sections "31.4.1 Signature Database" and
+"EFI_CERT_X509_GUID". Distrust information cannot be represented in
+this file format, and distrusted certificates are missing from these
+files. File "edk2-cacerts.bin" contains CA certificates trusted for TLS
+server authentication.
COMMANDS
@@ -215,11 +224,27 @@ COMMANDS
*extract*::
Instruct update-ca-trust to scan the <<sourceconf,SOURCE CONFIGURATION>> and produce
updated versions of the consolidated configuration files stored below
- the /etc/ssl/certs and /etc/ca-certificates/extracted directory
- hierarchies.
+ the /etc/ssl/certs and /etc/ca-certificates/extracted directory hierarchies.
FILES
-----
+/etc/ssl/certs::
+ Classic directory, files contain individual CA certificates trusted for TLS server authentication usage, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ Also includes the necessary hash symlinks expected by OpenSSL.
+ These files are symbolic links that are maintained by the update-ca-trust command.
+
+/etc/ssl/certs/ca-certificates.crt::
+ Classic filename, file contains a list of CA certificates trusted for TLS server authentication usage, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ This file is a symbolic link that refers to the consolidated output created by the update-ca-trust command.
+
+/etc/ssl/cert.pem::
+ Classic filename, file contains a list of CA certificates trusted for TLS server authentication usage, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ This file is a symbolic link that refers to the consolidated output created by the update-ca-trust command.
+
+/etc/ssl/java/cacerts::
+ Classic filename, file contains a list of CA certificates trusted for TLS server authentication usage, in the Java keystore file format, without distrust information.
+ This file is consolidated output created by the update-ca-trust command.
+
/usr/share/ca-certificates/trust-source::
Contains multiple, low priority source configuration files as explained in section <<sourceconf,SOURCE CONFIGURATION>>. Please pay attention to the specific meanings of the respective subdirectories.
@@ -232,32 +257,28 @@ FILES
See section <<extractconf,EXTRACTED CONFIGURATION>> for additional details.
/etc/ca-certificates/extracted/tls-ca-bundle.pem::
- Contains a list of CA certificates trusted for TLS server authentication, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ File contains a list of CA certificates trusted for TLS server authentication, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ This file is consolidated output created by the update-ca-trust command.
/etc/ca-certificates/extracted/email-ca-bundle.pem::
- Contains a list of CA certificates trusted for E-Mail protection, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ File contains a list of CA certificates trusted for E-Mail protection, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ This file is consolidated output created by the update-ca-trust command.
/etc/ca-certificates/extracted/objsign-ca-bundle.pem::
- Contains a list of CA certificates trusted for code signing, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ File contains a list of CA certificates trusted for code signing, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
+ This file is consolidated output created by the update-ca-trust command.
/etc/ca-certificates/extracted/ca-bundle.trust.crt::
- Contains a list of CA certificates in the extended BEGIN/END TRUSTED CERTIFICATE file format, which includes trust (and/or distrust) flags specific to certificate usage.
+ File contains a list of CA certificates in the extended BEGIN/END TRUSTED CERTIFICATE file format, which includes trust (and/or distrust) flags specific to certificate usage.
+ This file is consolidated output created by the update-ca-trust command.
/etc/ca-certificates/extracted/cadir::
Contains individual CA certificates trusted for TLS server authentication usage, in the simple BEGIN/END CERTIFICATE file format, without distrust information.
- Also includes the necessary hash symlinks expected by OpenSSL.
-
-/etc/ssl/certs::
- Classic directory, contains symlinks into /etc/ca-certificates/extracted/cadir which are maintained by the update-ca-trust command.
+ Also includes the necessary hash symlinks expected by OpenSSL.
+ These files are maintained by the update-ca-trust command.
-/etc/ssl/certs/ca-certificates.crt::
- Classic filename, a symlink to /etc/ca-certificates/extracted/tls-ca-bundle.pem.
-
-/etc/ssl/cert.pem::
- Classic filename, a symlink to /etc/ca-certificates/extracted/tls-ca-bundle.pem.
-
-/etc/ssl/java/cacerts::
- Classic filename, contains a list of CA certificates trusted for TLS server authentication usage, in the Java keystore file format, without distrust information.
+/etc/ca-certificates/extracted/edk2-cacerts.bin::
+ File contains a list of CA certificates trusted for TLS server authentication usage, in the UEFI signature database format, without distrust information.
This file is consolidated output created by the update-ca-trust command.
AUTHOR
diff --git a/abs/core/ca-certificates/update-ca-trust.hook b/abs/core/ca-certificates/update-ca-trust.hook
new file mode 100644
index 0000000..ace8ea8
--- /dev/null
+++ b/abs/core/ca-certificates/update-ca-trust.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Type = File
+Target = usr/share/ca-certificates/trust-source/*
+
+[Action]
+Description = Rebuilding certificate stores...
+When = PostTransaction
+Exec = /usr/bin/update-ca-trust
diff --git a/abs/core/ceton_infinitv/PKGBUILD b/abs/core/ceton_infinitv/PKGBUILD
index 7264dd9..ff9c6fc 100755
--- a/abs/core/ceton_infinitv/PKGBUILD
+++ b/abs/core/ceton_infinitv/PKGBUILD
@@ -2,10 +2,10 @@
pkgname=ceton_infinitv
#_kernver=`uname -r`
-_kernver=4.9.109-1-ARCH
+_kernver=4.9.159-1-ARCH
_extramods="extramodules-4.9-ARCH"
pkgver=2013.0326.2226
-pkgrel=26
+pkgrel=27
usb_pkgver=0.1.0
pci_pkgver=`echo $pkgver | tr . _`
pkgdesc="Drivers for Ceton InfiniTV4 - pci/usb "
diff --git a/abs/core/curl/0001-connection_check-restore-original-conn-data-after-th.patch b/abs/core/curl/0001-connection_check-restore-original-conn-data-after-th.patch
new file mode 100644
index 0000000..e5ed809
--- /dev/null
+++ b/abs/core/curl/0001-connection_check-restore-original-conn-data-after-th.patch
@@ -0,0 +1,77 @@
+From 4015fae044ce52a639c9358e22a9e948f287c89f Mon Sep 17 00:00:00 2001
+Message-Id: <4015fae044ce52a639c9358e22a9e948f287c89f.1550326608.git.jan.steffens@gmail.com>
+From: Jay Satiro <raysatiro@yahoo.com>
+Date: Mon, 11 Feb 2019 23:00:00 -0500
+Subject: [PATCH] connection_check: restore original conn->data after the check
+
+- Save the original conn->data before it's changed to the specified
+ data transfer for the connection check and then restore it afterwards.
+
+This is a follow-up to 38d8e1b 2019-02-11.
+
+History:
+
+It was discovered a month ago that before checking whether to extract a
+dead connection that that connection should be associated with a "live"
+transfer for the check (ie original conn->data ignored and set to the
+passed in data). A fix was landed in 54b201b which did that and also
+cleared conn->data after the check. The original conn->data was not
+restored, so presumably it was thought that a valid conn->data was no
+longer needed.
+
+Several days later it was discovered that a valid conn->data was needed
+after the check and follow-up fix was landed in bbae24c which partially
+reverted the original fix and attempted to limit the scope of when
+conn->data was changed to only when pruning dead connections. In that
+case conn->data was not cleared and the original conn->data not
+restored.
+
+A month later it was discovered that the original fix was somewhat
+correct; a "live" transfer is needed for the check in all cases
+because original conn->data could be null which could cause a bad deref
+at arbitrary points in the check. A fix was landed in 38d8e1b which
+expanded the scope to all cases. conn->data was not cleared and the
+original conn->data not restored.
+
+A day later it was discovered that not restoring the original conn->data
+may lead to busy loops in applications that use the event interface, and
+given this observation it's a pretty safe assumption that there is some
+code path that still needs the original conn->data. This commit is the
+follow-up fix for that, it restores the original conn->data after the
+connection check.
+
+Assisted-by: tholin@users.noreply.github.com
+Reported-by: tholin@users.noreply.github.com
+
+Fixes https://github.com/curl/curl/issues/3542
+Closes #3559
+---
+ lib/url.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/lib/url.c b/lib/url.c
+index bc47685db..46c8fb5fb 100644
+--- a/lib/url.c
++++ b/lib/url.c
+@@ -964,8 +964,10 @@ static bool extract_if_dead(struct connectdata *conn,
+ /* The protocol has a special method for checking the state of the
+ connection. Use it to check if the connection is dead. */
+ unsigned int state;
++ struct Curl_easy *olddata = conn->data;
+ conn->data = data; /* use this transfer for now */
+ state = conn->handler->connection_check(conn, CONNCHECK_ISDEAD);
++ conn->data = olddata;
+ dead = (state & CONNRESULT_DEAD);
+ }
+ else {
+@@ -994,7 +996,6 @@ struct prunedead {
+ static int call_extract_if_dead(struct connectdata *conn, void *param)
+ {
+ struct prunedead *p = (struct prunedead *)param;
+- conn->data = p->data; /* transfer to use for this check */
+ if(extract_if_dead(conn, p->data)) {
+ /* stop the iteration here, pass back the connection that was extracted */
+ p->extracted = conn;
+--
+2.20.1
+
diff --git a/abs/core/curl/0001-connection_check-set-data-to-the-transfer-doing-the-.patch b/abs/core/curl/0001-connection_check-set-data-to-the-transfer-doing-the-.patch
new file mode 100644
index 0000000..cf486db
--- /dev/null
+++ b/abs/core/curl/0001-connection_check-set-data-to-the-transfer-doing-the-.patch
@@ -0,0 +1,31 @@
+From 38d8e1bd4ed1ae52930ae466ecbac78e888b142f Mon Sep 17 00:00:00 2001
+Message-Id: <38d8e1bd4ed1ae52930ae466ecbac78e888b142f.1550283194.git.jan.steffens@gmail.com>
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Mon, 11 Feb 2019 07:56:00 +0100
+Subject: [PATCH] connection_check: set ->data to the transfer doing the check
+
+The http2 code for connection checking needs a transfer to use. Make
+sure a working one is set before handler->connection_check() is called.
+
+Reported-by: jnbr on github
+Fixes #3541
+Closes #3547
+---
+ lib/url.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/url.c b/lib/url.c
+index bdb472999..bc47685db 100644
+--- a/lib/url.c
++++ b/lib/url.c
+@@ -964,6 +964,7 @@ static bool extract_if_dead(struct connectdata *conn,
+ /* The protocol has a special method for checking the state of the
+ connection. Use it to check if the connection is dead. */
+ unsigned int state;
++ conn->data = data; /* use this transfer for now */
+ state = conn->handler->connection_check(conn, CONNCHECK_ISDEAD);
+ dead = (state & CONNRESULT_DEAD);
+ }
+--
+2.20.1
+
diff --git a/abs/core/curl/0001-multi-remove-verbose-Expire-in-messages.patch b/abs/core/curl/0001-multi-remove-verbose-Expire-in-messages.patch
new file mode 100644
index 0000000..9677787
--- /dev/null
+++ b/abs/core/curl/0001-multi-remove-verbose-Expire-in-messages.patch
@@ -0,0 +1,26 @@
+From aabc7ae5ecf70973add429b5acbc86d6a57e4da5 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Mon, 11 Feb 2019 22:57:33 +0100
+Subject: [PATCH] multi: remove verbose "Expire in" ... messages
+
+Reported-by: James Brown
+Bug: https://curl.haxx.se/mail/archive-2019-02/0013.html
+Closes #3558
+---
+ lib/multi.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/lib/multi.c b/lib/multi.c
+index 6b891620f6..cd9d758ca4 100644
+--- a/lib/multi.c
++++ b/lib/multi.c
+@@ -3032,9 +3032,6 @@ void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id)
+
+ DEBUGASSERT(id < EXPIRE_LAST);
+
+- infof(data, "Expire in %ld ms for %x (transfer %p)\n",
+- (long)milli, id, data);
+-
+ set = Curl_now();
+ set.tv_sec += milli/1000;
+ set.tv_usec += (unsigned int)(milli%1000)*1000;
diff --git a/abs/core/curl/0001-singlesocket-fix-the-sincebefore-placement.patch b/abs/core/curl/0001-singlesocket-fix-the-sincebefore-placement.patch
new file mode 100644
index 0000000..ecbed62
--- /dev/null
+++ b/abs/core/curl/0001-singlesocket-fix-the-sincebefore-placement.patch
@@ -0,0 +1,52 @@
+From b7753be57d7bdb6b909f1a0a4207950e18100d79 Mon Sep 17 00:00:00 2001
+Message-Id: <b7753be57d7bdb6b909f1a0a4207950e18100d79.1550588688.git.jan.steffens@gmail.com>
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Tue, 19 Feb 2019 15:56:54 +0100
+Subject: [PATCH] singlesocket: fix the 'sincebefore' placement
+
+The variable wasn't properly reset within the loop and thus could remain
+set for sockets that hadn't been set before and thus missed notifying
+the app.
+
+Detected-by: Jan Alexander Steffens
+Fixes #3585
+---
+ lib/multi.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/multi.c b/lib/multi.c
+index aaae8b978..521262b2b 100644
+--- a/lib/multi.c
++++ b/lib/multi.c
+@@ -2349,26 +2349,26 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
+ int num;
+ unsigned int curraction;
+ int actions[MAX_SOCKSPEREASYHANDLE];
+- unsigned int comboaction;
+- bool sincebefore = FALSE;
+
+ for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++)
+ socks[i] = CURL_SOCKET_BAD;
+
+ /* Fill in the 'current' struct with the state as it is now: what sockets to
+ supervise and for what actions */
+ curraction = multi_getsock(data, socks, MAX_SOCKSPEREASYHANDLE);
+
+ /* We have 0 .. N sockets already and we get to know about the 0 .. M
+ sockets we should have from now on. Detect the differences, remove no
+ longer supervised ones and add new ones */
+
+ /* walk over the sockets we got right now */
+ for(i = 0; (i< MAX_SOCKSPEREASYHANDLE) &&
+ (curraction & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i)));
+ i++) {
+ unsigned int action = CURL_POLL_NONE;
+ unsigned int prevaction = 0;
++ unsigned int comboaction;
++ bool sincebefore = FALSE;
+
+ s = socks[i];
+
+--
+2.20.1
+
diff --git a/abs/core/curl/PKGBUILD b/abs/core/curl/PKGBUILD
index fed52a2..afa6928 100644
--- a/abs/core/curl/PKGBUILD
+++ b/abs/core/curl/PKGBUILD
@@ -1,4 +1,3 @@
-# $Id$
# Maintainer: Dave Reisner <dreisner@archlinux.org>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Eric Belanger <eric@archlinux.org>
@@ -6,20 +5,41 @@
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=curl
-pkgver=7.58.0
-pkgrel=2
+pkgver=7.64.0
+pkgrel=9
pkgdesc="An URL retrieval utility and library"
arch=('x86_64')
url="https://curl.haxx.se"
license=('MIT')
-depends=('ca-certificates' 'krb5' 'libssh2' 'openssl' 'zlib' 'libpsl' 'libnghttp2')
+depends=('ca-certificates' 'krb5' 'libssh2' 'openssl' 'zlib' 'libpsl' 'libnghttp2'
+ 'libidn2' 'libidn2.so')
provides=('libcurl.so')
-options=('strip' 'debug')
-source=("https://curl.haxx.se/download/$pkgname-$pkgver.tar.gz"{,.asc})
-sha512sums=('7b12b79107558bb266672d6e128615fe5a8149c37f4ae540197e3298f5d312beb2d78fbb23e3ea84ea7afc41549898a1e5cd38509f0388b11707b48d5efb8ca3'
- 'SKIP')
-validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2' # Daniel Stenberg
- '914C533DF9B2ADA2204F586D78E11C6B279D5C91') # Daniel Stenberg (old key)
+source=("https://curl.haxx.se/download/$pkgname-$pkgver.tar.gz"{,.asc}
+ "0001-connection_check-set-data-to-the-transfer-doing-the-.patch"
+ "0001-connection_check-restore-original-conn-data-after-th.patch"
+ "0001-singlesocket-fix-the-sincebefore-placement.patch"
+ "0001-multi-remove-verbose-Expire-in-messages.patch")
+sha512sums=('ea0e68f9cbf2eb4f235d8506962dcc7709f769ef3526c0e4c130fdaf7186a1a13b303c6ce919cb9125bbf7c64ddf4f8efb3d9269b906f856e6d7b3def027fb81'
+ 'SKIP'
+ 'e9fdd70ec6798f48080582e4cb554fc4cd247075c293c66dcf8b27cab151def1c709c306e4dc8a1439b9843f31fe51248b5d6c7f5183e4af65819a084fddcb1f'
+ 'adcbf6309e5d69ede876966790dd504da3097a9e03fedf77d44e10fddcb24a5eaa29b4c9229c813d54bd0c2141211e46b50ca58d89608f7c391434e469316cbd'
+ '17c8c19e874bfed0736d579300be5a94f87467d1a2c346fe4dca1698fb73c05d02639cf712c95125f32bbd869457d60be4a1ca0f3d5cbc8b091bb35eb2594b15'
+ 'f09b63c36bd958c35bf6e3885efe46fea75fa2780510cac66220bfc1d771de9040560586e0672dac5eb7db7acf67051cf74e56518a8ada6f691c6d8f9dc84fa4')
+validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg
+
+prepare() {
+ cd "$pkgname-$pkgver"
+
+ patch -Np1 < ../0001-multi-remove-verbose-Expire-in-messages.patch
+
+ # Crash in cargo:
+ # https://github.com/curl/curl/issues/3541
+ patch -Np1 < ../0001-connection_check-set-data-to-the-transfer-doing-the-.patch
+ patch -Np1 < ../0001-connection_check-restore-original-conn-data-after-th.patch
+
+ # https://bugs.archlinux.org/task/61688
+ patch -Np1 < ../0001-singlesocket-fix-the-sincebefore-placement.patch
+}
build() {
cd "$pkgname-$pkgver"
@@ -34,6 +54,7 @@ build() {
--enable-versioned-symbols \
--enable-threaded-resolver \
--with-gssapi \
+ --with-libssh2 \
--with-random=/dev/urandom \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
@@ -47,5 +68,5 @@ package() {
make DESTDIR="$pkgdir" install -C scripts
# license
- install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING
}
diff --git a/abs/core/ffmpeg/PKGBUILD b/abs/core/ffmpeg/PKGBUILD
index 8e23c0f..1717a60 100644
--- a/abs/core/ffmpeg/PKGBUILD
+++ b/abs/core/ffmpeg/PKGBUILD
@@ -1,4 +1,3 @@
-# $Id$
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
@@ -6,63 +5,103 @@
# Contributor: Paul Mattal <paul@archlinux.org>
pkgname=ffmpeg
-pkgver=3.4.2
-pkgrel=2
+pkgver=4.1
+pkgrel=3
epoch=1
pkgdesc='Complete solution to record, convert and stream audio and video'
-arch=('x86_64')
-url='http://ffmpeg.org/'
-license=('GPL3')
-depends=('alsa-lib' 'bzip2' 'fontconfig' 'fribidi' 'glibc' 'gmp' 'gnutls' 'gsm'
- 'lame' 'libavc1394' 'libiec61883' 'libmodplug'
- 'libraw1394' 'libsoxr' 'libssh' 'libtheora' 'libvdpau' 'libwebp'
- 'libx11' 'libxcb' 'libxml2' 'opencore-amr' 'openjpeg2' 'opus' 'sdl2'
- 'speex' 'v4l-utils' 'xz' 'zlib'
- 'libomxil-bellagio'
- 'libass.so' 'libbluray.so' 'libfreetype.so' 'libva-drm.so' 'libva.so'
- 'libva-x11.so' 'libvidstab.so' 'libvorbisenc.so' 'libvorbis.so'
- 'libvpx.so' 'libx264.so' 'libx265.so' 'libxvidcore.so')
-makedepends=('ladspa' 'libvdpau' 'yasm')
+arch=(x86_64)
+url=https://ffmpeg.org/
+license=(GPL3)
+depends=(
+ alsa-lib
+ aom
+ bzip2
+ fontconfig
+ fribidi
+ gmp
+ gnutls
+ gsm
+ lame
+ libass.so
+ libavc1394
+ libbluray.so
+ libdrm
+ libfreetype.so
+ libiec61883
+ libmodplug
+ libomxil-bellagio
+ libraw1394
+ libsoxr
+ libssh
+ libtheora
+ libva.so
+ libva-drm.so
+ libva-x11.so
+ libvdpau
+ libvidstab.so
+ libvorbisenc.so
+ libvorbis.so
+ libvpx.so
+ libwebp
+ libx11
+ libx264.so
+ libx265.so
+ libxcb
+ libxext
+ libxml2
+ libxv
+ libxvidcore.so
+ opencore-amr
+ openjpeg2
+ opus
+ sdl2
+ speex
+ v4l-utils
+ xz
+ zlib
+)
+makedepends=(
+ ffnvcodec-headers
+ git
+ ladspa
+ nasm
+)
optdepends=('ladspa: LADSPA filters')
-provides=('libavcodec.so' 'libavdevice.so' 'libavfilter.so' 'libavformat.so'
- 'libavresample.so' 'libavutil.so' 'libpostproc.so' 'libswresample.so'
- 'libswscale.so')
-source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"{,.asc}
- 'fs56089.patch')
-validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8')
-sha256sums=('2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740'
- 'SKIP'
- '0bfcd12d1992903f21c146ae56d9ad89b52818cfb2303197ee905347c25a5427')
-
-prepare() {
- cd ffmpeg-${pkgver}
-
- # https://bugs.archlinux.org/task/56089
- # Backport of http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=a606f27f4c610708fa96e35eed7b7537d3d8f712
- patch -Np1 -i ../fs56089.patch
-}
+provides=(
+ libavcodec.so
+ libavdevice.so
+ libavfilter.so
+ libavformat.so
+ libavutil.so
+ libpostproc.so
+ libswresample.so
+ libswscale.so
+)
+source=(git+https://git.ffmpeg.org/ffmpeg.git#tag=n${pkgver})
+sha256sums=(SKIP)
build() {
- cd ffmpeg-${pkgver}
+ cd ffmpeg
./configure \
--prefix='/usr' \
--disable-debug \
--disable-static \
--disable-stripping \
- --enable-avisynth \
- --enable-avresample \
--enable-fontconfig \
--enable-gmp \
--enable-gnutls \
--enable-gpl \
--enable-ladspa \
+ --enable-libaom \
--enable-libass \
--enable-libbluray \
+ --enable-libdrm \
--enable-libfreetype \
--enable-libfribidi \
--enable-libgsm \
--enable-libiec61883 \
+ --disable-libjack \
--enable-libmodplug \
--enable-libmp3lame \
--enable-libopencore_amrnb \
@@ -84,20 +123,20 @@ build() {
--enable-libxcb \
--enable-libxml2 \
--enable-libxvid \
+ --enable-nvdec \
+ --enable-nvenc \
+ --enable-omx \
--enable-shared \
- --enable-version3 \
- --enable-omx
+ --enable-version3
make
make tools/qt-faststart
- make doc/ff{mpeg,play,server}.1
+ make doc/ff{mpeg,play}.1
}
package() {
- cd ffmpeg-${pkgver}
-
- make DESTDIR="${pkgdir}" install install-man
- install -Dm 755 tools/qt-faststart "${pkgdir}"/usr/bin/
+ make DESTDIR="${pkgdir}" -C ffmpeg install install-man
+ install -Dm 755 ffmpeg/tools/qt-faststart "${pkgdir}"/usr/bin/
}
# vim: ts=2 sw=2 et:
diff --git a/abs/core/freetype2/0001-Enable-table-validation-modules.patch b/abs/core/freetype2/0001-Enable-table-validation-modules.patch
index 5fd339f..b492755 100644
--- a/abs/core/freetype2/0001-Enable-table-validation-modules.patch
+++ b/abs/core/freetype2/0001-Enable-table-validation-modules.patch
@@ -1,5 +1,5 @@
-From c7a6a2312313a971089fb592deb8c476be4dca0f Mon Sep 17 00:00:00 2001
-Message-Id: <c7a6a2312313a971089fb592deb8c476be4dca0f.1513462508.git.jan.steffens@gmail.com>
+From 7053fd3cef88991e2da6aac5f1dda2c30ce22b4c Mon Sep 17 00:00:00 2001
+Message-Id: <7053fd3cef88991e2da6aac5f1dda2c30ce22b4c.1525259379.git.jan.steffens@gmail.com>
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Tue, 23 Jun 2015 08:40:29 +0200
Subject: [PATCH 1/4] Enable table validation modules
@@ -9,11 +9,11 @@ Subject: [PATCH 1/4] Enable table validation modules
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.cfg b/modules.cfg
-index 56a2340e56d187aa..3a028329187275df 100644
+index 4bf344524..f9aa44b2a 100644
--- a/modules.cfg
+++ b/modules.cfg
@@ -120,30 +120,30 @@ AUX_MODULES += cache
- # TrueType GX/AAT table validation. Needs ftgxval.c below.
+ # TrueType GX/AAT table validation. Needs `ftgxval.c' below.
#
# No FT_CONFIG_OPTION_PIC support.
-# AUX_MODULES += gxvalid
@@ -37,7 +37,7 @@ index 56a2340e56d187aa..3a028329187275df 100644
# No FT_CONFIG_OPTION_PIC support.
AUX_MODULES += bzip2
- # OpenType table validation. Needs ftotval.c below.
+ # OpenType table validation. Needs `ftotval.c' below.
#
# No FT_CONFIG_OPTION_PIC support.
-# AUX_MODULES += otvalid
@@ -46,5 +46,5 @@ index 56a2340e56d187aa..3a028329187275df 100644
# Auxiliary PostScript driver component to share common code.
#
--
-2.15.1
+2.17.0
diff --git a/abs/core/freetype2/0001-psaux-Correctly-handle-Flex-features-52846.patch b/abs/core/freetype2/0001-psaux-Correctly-handle-Flex-features-52846.patch
deleted file mode 100644
index 44630fb..0000000
--- a/abs/core/freetype2/0001-psaux-Correctly-handle-Flex-features-52846.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From cc2f3cdecff5a351e7e8961b9f2e389ab740231a Mon Sep 17 00:00:00 2001
-From: Ewald Hew <ewaldhew@gmail.com>
-Date: Wed, 10 Jan 2018 13:24:56 +0800
-Subject: [PATCH] [psaux] Correctly handle Flex features (#52846).
-
-* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
-cf2_cmdHMOVETO>: Do not move if doing Flex.
----
- src/psaux/psintrp.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/psaux/psintrp.c b/src/psaux/psintrp.c
-index 5c0ee78..da5a8da 100644
---- a/src/psaux/psintrp.c
-+++ b/src/psaux/psintrp.c
-@@ -852,7 +852,8 @@
-
- curY = ADD_INT32( curY, cf2_stack_popFixed( opStack ) );
-
-- cf2_glyphpath_moveTo( &glyphPath, curX, curY );
-+ if ( !decoder->flex_state )
-+ cf2_glyphpath_moveTo( &glyphPath, curX, curY );
-
- break;
-
-@@ -2674,7 +2675,8 @@
-
- curX = ADD_INT32( curX, cf2_stack_popFixed( opStack ) );
-
-- cf2_glyphpath_moveTo( &glyphPath, curX, curY );
-+ if ( !decoder->flex_state )
-+ cf2_glyphpath_moveTo( &glyphPath, curX, curY );
-
- break;
-
---
-2.16.1
-
diff --git a/abs/core/freetype2/0002-Enable-infinality-subpixel-hinting.patch b/abs/core/freetype2/0002-Enable-infinality-subpixel-hinting.patch
index 5f43915..461f8e9 100644
--- a/abs/core/freetype2/0002-Enable-infinality-subpixel-hinting.patch
+++ b/abs/core/freetype2/0002-Enable-infinality-subpixel-hinting.patch
@@ -1,7 +1,7 @@
-From 438b8c65e900d4c28db9eeb2a45e5998048eb471 Mon Sep 17 00:00:00 2001
-Message-Id: <438b8c65e900d4c28db9eeb2a45e5998048eb471.1513462508.git.jan.steffens@gmail.com>
-In-Reply-To: <c7a6a2312313a971089fb592deb8c476be4dca0f.1513462508.git.jan.steffens@gmail.com>
-References: <c7a6a2312313a971089fb592deb8c476be4dca0f.1513462508.git.jan.steffens@gmail.com>
+From ecb052d87dd80603aac454a65fd6e074bc57772c Mon Sep 17 00:00:00 2001
+Message-Id: <ecb052d87dd80603aac454a65fd6e074bc57772c.1525259379.git.jan.steffens@gmail.com>
+In-Reply-To: <7053fd3cef88991e2da6aac5f1dda2c30ce22b4c.1525259379.git.jan.steffens@gmail.com>
+References: <7053fd3cef88991e2da6aac5f1dda2c30ce22b4c.1525259379.git.jan.steffens@gmail.com>
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Mon, 29 Aug 2016 08:43:10 +0200
Subject: [PATCH 2/4] Enable infinality subpixel hinting
@@ -11,10 +11,10 @@ Subject: [PATCH 2/4] Enable infinality subpixel hinting
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
-index 06f3d50bb02fb5ac..e6f9720df9b5d004 100644
+index 4bcab2af5..862b926d5 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
-@@ -654,8 +654,8 @@ FT_BEGIN_HEADER
+@@ -658,8 +658,8 @@ FT_BEGIN_HEADER
/* [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
/* */
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
@@ -26,5 +26,5 @@ index 06f3d50bb02fb5ac..e6f9720df9b5d004 100644
/*************************************************************************/
--
-2.15.1
+2.17.0
diff --git a/abs/core/freetype2/0003-Enable-long-PCF-family-names.patch b/abs/core/freetype2/0003-Enable-long-PCF-family-names.patch
index be202c1..38623e3 100644
--- a/abs/core/freetype2/0003-Enable-long-PCF-family-names.patch
+++ b/abs/core/freetype2/0003-Enable-long-PCF-family-names.patch
@@ -1,7 +1,7 @@
-From 7e262bff01573c67432f8b8fd879bf858e1611b3 Mon Sep 17 00:00:00 2001
-Message-Id: <7e262bff01573c67432f8b8fd879bf858e1611b3.1513462508.git.jan.steffens@gmail.com>
-In-Reply-To: <c7a6a2312313a971089fb592deb8c476be4dca0f.1513462508.git.jan.steffens@gmail.com>
-References: <c7a6a2312313a971089fb592deb8c476be4dca0f.1513462508.git.jan.steffens@gmail.com>
+From bbb386e90cf9440c9c9952aa14bc309f2ec76205 Mon Sep 17 00:00:00 2001
+Message-Id: <bbb386e90cf9440c9c9952aa14bc309f2ec76205.1525259379.git.jan.steffens@gmail.com>
+In-Reply-To: <7053fd3cef88991e2da6aac5f1dda2c30ce22b4c.1525259379.git.jan.steffens@gmail.com>
+References: <7053fd3cef88991e2da6aac5f1dda2c30ce22b4c.1525259379.git.jan.steffens@gmail.com>
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Sun, 14 May 2017 18:09:31 +0200
Subject: [PATCH 3/4] Enable long PCF family names
@@ -11,10 +11,10 @@ Subject: [PATCH 3/4] Enable long PCF family names
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
-index e6f9720df9b5d004..832c9c3cd200f91a 100644
+index 862b926d5..bd6a4f7d3 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
-@@ -845,7 +845,7 @@ FT_BEGIN_HEADER
+@@ -849,7 +849,7 @@ FT_BEGIN_HEADER
/* If this option is activated, it can be controlled with the */
/* `no-long-family-names' property of the pcf driver module. */
/* */
@@ -24,5 +24,5 @@ index e6f9720df9b5d004..832c9c3cd200f91a 100644
/*************************************************************************/
--
-2.15.1
+2.17.0
diff --git a/abs/core/freetype2/PKGBUILD b/abs/core/freetype2/PKGBUILD
index 251ac74..4406cca 100644
--- a/abs/core/freetype2/PKGBUILD
+++ b/abs/core/freetype2/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=freetype2
pkgname=('freetype2' 'freetype2-demos' 'freetype2-docs')
-pkgver=2.9
-pkgrel=2
+pkgver=2.9.1
+pkgrel=1
pkgdesc="Font rasterization library"
arch=(x86_64)
license=('GPL')
@@ -19,19 +18,17 @@ source=(https://download-mirror.savannah.gnu.org/releases/freetype/freetype-${pk
0001-Enable-table-validation-modules.patch
0002-Enable-infinality-subpixel-hinting.patch
0003-Enable-long-PCF-family-names.patch
- 0001-psaux-Correctly-handle-Flex-features-52846.patch
0005-freetype-2.5.2-more-demos.patch
freetype2.sh)
-sha1sums=('94c4399b1a55c5892812e732843fcb4a7c2fe657'
+sha1sums=('220c82062171c513e4017c523d196933c9de4a7d'
'SKIP'
- '63e171aa5b2c46e7bece3ae7781015380d012e1f'
+ 'bb6c973f9fef972ad4ecc03bc09ed676b8dc0d59'
'SKIP'
- 'bd8a5d17274f987284e6f934722fb7715d00892e'
+ '45704d7b75c4f9fdd6a9b3787918e8220b36aa77'
'SKIP'
- 'b69531770c343d403be294b7e4d25ac45738c833'
- '3d26a569f0cb94c28a550577f5dcaadb4e193d91'
- '770f1981734a837bcf065564c91644b4cc5e256a'
- '21ad7dd31e16adb5b39adfa5671018a736626562'
+ 'd9eb22e5c962923089b0c9fc5491cf28a19bd982'
+ 'd13503902e0404cf3558db76b477f23f9910d06e'
+ 'fc49742fb6c19fe0677e3552bb7c00aac8530265'
'72cfecbe738085eec475e012617661ad0cc9b76f'
'bc6df1661c4c33e20f5ce30c2da8ad3c2083665f')
validpgpkeys=('58E0C111E39F5408C5D3EC76C1A60EACE707FDA5')
@@ -46,10 +43,6 @@ prepare() {
patch -Np1 -i ../0002-Enable-infinality-subpixel-hinting.patch
patch -Np1 -i ../0003-Enable-long-PCF-family-names.patch
- # Freetype 2.9 regression: bad rendering for some Type 1 fonts
- # https://savannah.nongnu.org/bugs/?52846
- patch -Np1 -i ../0001-psaux-Correctly-handle-Flex-features-52846.patch
-
cd ../freetype2-demos
# enable more demos
patch -Np1 -i ../0005-freetype-2.5.2-more-demos.patch
diff --git a/abs/core/gdk-pixbuf2/PKGBUILD b/abs/core/gdk-pixbuf2/PKGBUILD
index ad535fc..d15d040 100644
--- a/abs/core/gdk-pixbuf2/PKGBUILD
+++ b/abs/core/gdk-pixbuf2/PKGBUILD
@@ -1,33 +1,48 @@
-# $Id$
-# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
pkgname=gdk-pixbuf2
-pkgver=2.31.1
-pkgrel=2
+pkgver=2.38.0
+pkgrel=1
pkgdesc="An image loading library"
-arch=('i686' 'x86_64')
-url="http://www.gtk.org/"
-license=('LGPL2.1')
-depends=('glib2' 'libpng' 'libtiff' 'libjpeg' 'libx11' 'jasper')
-makedepends=('gtk-doc' 'gobject-introspection')
+arch=(x86_64)
+url="https://wiki.gnome.org/Projects/GdkPixbuf"
+license=(LGPL2.1)
+depends=(glib2 libpng libtiff libjpeg libx11 jasper shared-mime-info)
+makedepends=(gtk-doc gobject-introspection git docbook-xsl meson)
install=gdk-pixbuf2.install
-source=(http://download.gnome.org/sources/gdk-pixbuf/${pkgver:0:4}/gdk-pixbuf-$pkgver.tar.xz)
-sha256sums=('25a75e3c61dac11e6ff6416ad846951ccafac6486b1c6a1bfb0b213b99db52cd')
+_commit=0b1eab312e77701c20b07fb8e38119009f8b34c3 # tags/2.38.0^0
+source=("git+https://gitlab.gnome.org/GNOME/gdk-pixbuf.git#commit=$_commit"
+ gdk-pixbuf-query-loaders.hook)
+sha256sums=('SKIP'
+ '963afcfacde9fd36031d93c8aa4c94a669ab1dbe9ba0d2cf17599b7d358e54c2')
+
+pkgver() {
+ cd gdk-pixbuf
+ git describe --tags | sed 's/-/+/g'
+}
+
+prepare() {
+ cd gdk-pixbuf
+}
build() {
- cd gdk-pixbuf-$pkgver
+ arch-meson gdk-pixbuf build \
+ -D jasper=true \
+ -D docs=true \
+ -D installed_tests=false
+ ninja -C build
+}
- ./configure --prefix=/usr \
- --with-x11 \
- --with-libjasper \
- --with-included-loaders=png
- make
+check() {
+ cd build
+ # pixbuf-randomly-modified fails randomly
+ meson test -t 3 || :
}
package() {
- cd gdk-pixbuf-$pkgver
-
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 *.hook
}
# vim:set ts=2 sw=2 et:
diff --git a/abs/core/gdk-pixbuf2/gdk-pixbuf-query-loaders.hook b/abs/core/gdk-pixbuf2/gdk-pixbuf-query-loaders.hook
new file mode 100644
index 0000000..3f6a3e4
--- /dev/null
+++ b/abs/core/gdk-pixbuf2/gdk-pixbuf-query-loaders.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so
+
+[Action]
+Description = Probing GDK-Pixbuf loader modules...
+When = PostTransaction
+Exec = /usr/bin/gdk-pixbuf-query-loaders --update-cache
diff --git a/abs/core/gdk-pixbuf2/gdk-pixbuf2.install b/abs/core/gdk-pixbuf2/gdk-pixbuf2.install
index f04c096..83fa07c 100644
--- a/abs/core/gdk-pixbuf2/gdk-pixbuf2.install
+++ b/abs/core/gdk-pixbuf2/gdk-pixbuf2.install
@@ -1,11 +1,3 @@
-post_install() {
- gdk-pixbuf-query-loaders --update-cache
-}
-
-post_upgrade() {
- post_install
-}
-
pre_remove() {
- rm -f /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/loaders.cache
+ rm -f /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
}
diff --git a/abs/core/glib2/PKGBUILD b/abs/core/glib2/PKGBUILD
index 3498bde..d0e380b 100644
--- a/abs/core/glib2/PKGBUILD
+++ b/abs/core/glib2/PKGBUILD
@@ -1,69 +1,74 @@
-# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=glib2
pkgname=(glib2 glib2-docs)
-pkgver=2.46.2
-pkgrel=2
-pkgdesc="Common C routines used by GTK+ and other libs"
-url="http://www.gtk.org/"
-arch=(i686 x86_64)
-makedepends=('pkg-config' 'python2' 'libxslt' 'docbook-xml' 'pcre' 'libffi' 'libelf')
-source=(http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver:0:4}/glib-$pkgver.tar.xz
- revert-warn-glib-compile-schemas.patch memleak.patch)
-sha256sums=('5031722e37036719c1a09163cc6cf7c326e4c4f1f1e074b433c156862bd733db'
- '049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97'
- '8337eeba4a32133d41575c8338fca32ac6a867e6e4a4e021355fcdeb606420a6')
+pkgver=2.58.3
+pkgrel=1
+pkgdesc="Low level core library"
+url="https://wiki.gnome.org/Projects/GLib"
+license=(LGPL2.1)
+arch=(x86_64)
+depends=(pcre libffi libutil-linux zlib)
+makedepends=(gettext gtk-doc shared-mime-info python libelf git util-linux meson dbus)
+checkdepends=(desktop-file-utils)
+optdepends=('python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-report'
+ 'libelf: gresource inspection tool')
+options=(!emptydirs)
+_commit=f2d1128ffae0de87680e411fb62ccfccafed6b1c # tags/2.58.3^0
+source=("git+https://gitlab.gnome.org/GNOME/glib.git#commit=$_commit"
+ noisy-glib-compile-schemas.diff
+ glib-compile-schemas.hook gio-querymodules.hook)
+sha256sums=('SKIP'
+ '81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531'
+ 'e1123a5d85d2445faac33f6dae1085fdd620d83279a4e130a83fe38db52b62b3'
+ '5ba204a2686304b1454d401a39a9d27d09dd25e4529664e3fd565be3d439f8b6')
+
+pkgver() {
+ cd glib
+ git describe --tags | sed 's/-/+/g'
+}
prepare() {
- cd glib-$pkgver
- patch -Rp1 -i ../revert-warn-glib-compile-schemas.patch
- patch -Np1 -i ../memleak.patch
+ cd glib
+
+ # Suppress noise from glib-compile-schemas.hook
+ patch -Np1 -i ../noisy-glib-compile-schemas.diff
}
-
+
build() {
- cd glib-$pkgver
- PYTHON=/usr/bin/python2 ./configure --prefix=/usr --libdir=/usr/lib \
- --sysconfdir=/etc \
- --with-pcre=system \
- --disable-fam
- make
+ arch-meson glib build \
+ -D selinux=false \
+ -D man=true \
+ -D gtk_doc=true
+ ninja -C build
}
check() {
- cd glib-$pkgver
- #make -k check || :
+ meson test -C build
}
package_glib2() {
- depends=('pcre' 'libffi')
- optdepends=('python2: for gdbus-codegen and gtester-report'
- 'libelf: gresource inspection tool')
- options=('!docs' '!emptydirs')
- license=('LGPL')
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 *.hook
- cd glib-$pkgver
- make completiondir=/usr/share/bash-completion/completions DESTDIR="$pkgdir" install
+ python -m compileall -d /usr/share/glib-2.0/codegen "$pkgdir/usr/share/glib-2.0/codegen"
+ python -O -m compileall -d /usr/share/glib-2.0/codegen "$pkgdir/usr/share/glib-2.0/codegen"
- for _i in "$pkgdir/usr/share/bash-completion/completions/"*; do
- chmod -x "$_i"
- done
-
- # Our gdb does not ship the required python modules, so remove it
- rm -rf "$pkgdir/usr/share/gdb/"
+ # Split docs
+ mv "$pkgdir/usr/share/gtk-doc" "$srcdir"
}
package_glib2-docs() {
- pkgdesc="Documentation for glib2"
- conflicts=('gobject2-docs')
- replaces=('gobject2-docs')
- license=('custom')
- options=('docs' '!emptydirs')
-
- cd glib-$pkgver/docs
- make DESTDIR="${pkgdir}" install
- install -m755 -d "${pkgdir}/usr/share/licenses/glib2-docs"
- install -m644 reference/COPYING "${pkgdir}/usr/share/licenses/glib2-docs/"
+ pkgdesc="Documentation for GLib"
+ depends=()
+ optdepends=()
+ license+=(custom)
+
+ mkdir -p "$pkgdir/usr/share"
+ mv gtk-doc "$pkgdir/usr/share"
- rm -rf "${pkgdir}/usr/share/man"
+ install -Dt "$pkgdir/usr/share/licenses/glib2-docs" -m644 glib/docs/reference/COPYING
}
+
+# vim:set sw=2 et:
diff --git a/abs/core/glib2/gio-querymodules.hook b/abs/core/glib2/gio-querymodules.hook
new file mode 100644
index 0000000..1932333
--- /dev/null
+++ b/abs/core/glib2/gio-querymodules.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/gio/modules/*.so
+
+[Action]
+Description = Updating GIO module cache...
+When = PostTransaction
+Exec = /usr/bin/gio-querymodules /usr/lib/gio/modules
diff --git a/abs/core/glib2/glib-compile-schemas.hook b/abs/core/glib2/glib-compile-schemas.hook
new file mode 100644
index 0000000..04dc59b
--- /dev/null
+++ b/abs/core/glib2/glib-compile-schemas.hook
@@ -0,0 +1,12 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/share/glib-2.0/schemas/*.gschema.xml
+Target = usr/share/glib-2.0/schemas/*.gschema.override
+
+[Action]
+Description = Compiling GSettings XML schema files...
+When = PostTransaction
+Exec = /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas
diff --git a/abs/core/glib2/memleak.patch b/abs/core/glib2/memleak.patch
deleted file mode 100644
index 2b927a1..0000000
--- a/abs/core/glib2/memleak.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From db641e32920ee8b553ab6f2d318aafa156e4390c Mon Sep 17 00:00:00 2001
-From: Evangelos Foutras <evangelos@foutrelis.com>
-Date: Wed, 25 Nov 2015 23:29:18 +0200
-Subject: GDBusProxy: Fix a memory leak during initialization
-
-https://bugzilla.gnome.org/show_bug.cgi?id=758641
----
- gio/gdbusproxy.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c
-index 52a22fb..7b1140f 100644
---- a/gio/gdbusproxy.c
-+++ b/gio/gdbusproxy.c
-@@ -1720,6 +1720,7 @@ async_initable_init_second_finish (GAsyncInitable *initable,
- if (result != NULL)
- {
- process_get_all_reply (proxy, result);
-+ g_variant_unref (result);
- }
-
- proxy->priv->initialized = TRUE;
---
-cgit v0.11.2
-
diff --git a/abs/core/glib2/noisy-glib-compile-schemas.diff b/abs/core/glib2/noisy-glib-compile-schemas.diff
new file mode 100644
index 0000000..f5f2d94
--- /dev/null
+++ b/abs/core/glib2/noisy-glib-compile-schemas.diff
@@ -0,0 +1,24 @@
+diff --git i/gio/glib-compile-schemas.c w/gio/glib-compile-schemas.c
+index b8de0907248f6860..130f89b1728f7932 100644
+--- i/gio/glib-compile-schemas.c
++++ w/gio/glib-compile-schemas.c
+@@ -1219,19 +1219,6 @@ parse_state_start_schema (ParseState *state,
+ return;
+ }
+
+- if (path && (g_str_has_prefix (path, "/apps/") ||
+- g_str_has_prefix (path, "/desktop/") ||
+- g_str_has_prefix (path, "/system/")))
+- {
+- gchar *message = NULL;
+- message = g_strdup_printf (_("Warning: Schema “%s” has path “%s”. "
+- "Paths starting with "
+- "“/apps/”, “/desktop/” or “/system/” are deprecated."),
+- id, path);
+- g_printerr ("%s\n", message);
+- g_free (message);
+- }
+-
+ state->schema_state = schema_state_new (path, gettext_domain,
+ extends, extends_name, list_of);
+
diff --git a/abs/core/glib2/revert-warn-glib-compile-schemas.patch b/abs/core/glib2/revert-warn-glib-compile-schemas.patch
deleted file mode 100644
index 75b0510..0000000
--- a/abs/core/glib2/revert-warn-glib-compile-schemas.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 6560b37450cd19c4a7c7b690e279fe97b7bfdcaa Mon Sep 17 00:00:00 2001
-From: Ryan Lortie <desrt@desrt.ca>
-Date: Thu, 12 Apr 2012 23:55:34 +0000
-Subject: glib-compile-schemas: warn about bad dconf paths
-
-For quite some time the recommended usage of GSettings and dconf has
-been to use paths like /org/gnome/example/. Use of /apps/ has spilled
-over from GConf and is continuing to make its way into a number of
-applications as they port.
-
-glib-compile-schemas will now warn about these types of paths being
-used. This generates a lot of noise, but hopefully it will reduce the
-number of ported applications making this mistake.
----
-diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c
-index cf02389..27d0181 100644
---- a/gio/glib-compile-schemas.c
-+++ b/gio/glib-compile-schemas.c
-@@ -1204,6 +1204,12 @@ parse_state_start_schema (ParseState *state,
- return;
- }
-
-+ if (path && (g_str_has_prefix (path, "/apps/") ||
-+ g_str_has_prefix (path, "/desktop/") ||
-+ g_str_has_prefix (path, "/system/")))
-+ g_printerr ("warning: Schema '%s' has path '%s'. Paths starting with "
-+ "'/apps/', '/desktop/' or '/system/' are deprecated.\n", id, path);
-+
- state->schema_state = schema_state_new (path, gettext_domain,
- extends, extends_name, list_of);
-
---
-cgit v0.9.0.2
diff --git a/abs/core/gobject-introspection/PKGBUILD b/abs/core/gobject-introspection/PKGBUILD
index 9f5edfa..2316aa6 100644
--- a/abs/core/gobject-introspection/PKGBUILD
+++ b/abs/core/gobject-introspection/PKGBUILD
@@ -1,41 +1,55 @@
-# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=gobject-introspection
-pkgname=('gobject-introspection' 'gobject-introspection-runtime')
-pkgver=1.46.0
+pkgname=(gobject-introspection gobject-introspection-runtime)
+pkgver=1.58.3
pkgrel=1
-url="https://live.gnome.org/GObjectIntrospection"
-arch=('x86_64' 'i686')
-license=('LGPL' 'GPL')
-makedepends=('cairo' 'python2' 'python2-mako')
-source=(https://download.gnome.org/sources/$pkgbase/${pkgver:0:4}/$pkgbase-$pkgver.tar.xz)
-sha256sums=('6658bd3c2b8813eb3e2511ee153238d09ace9d309e4574af27443d87423e4233')
+pkgdesc="Introspection system for GObject-based libraries"
+url="https://wiki.gnome.org/Projects/GObjectIntrospection"
+arch=(x86_64)
+license=(LGPL GPL)
+depends=(python python-mako)
+makedepends=(cairo git gtk-doc python-sphinx meson)
+options=(!emptydirs)
+_commit=96e0b3f92624937093f0c683db6968bc53c694eb # tags/1.58.3^0
+source=("git+https://gitlab.gnome.org/GNOME/gobject-introspection.git#commit=$_commit")
+sha512sums=('SKIP')
-prepare() {
- cd $pkgbase-$pkgver
- sed -i '1s|#!/usr/bin/env python$|&2|' giscanner/*.py
+pkgver() {
+ cd $pkgbase
+ git describe --tags | sed 's/-/+/g'
}
+prepare() {
+ cd $pkgbase
+}
+
build() {
- cd $pkgbase-$pkgver
- PYTHON=/usr/bin/python2 ./configure --prefix=/usr --disable-static --enable-doctool
- make
+ arch-meson $pkgbase build -D cairo=true -D gtk-doc=true
+ ninja -C build
}
-package_gobject-introspection-runtime() {
- pkgdesc="Introspection system for GObject-based libraries - runtime files"
- depends=('glib2')
- cd $pkgbase-$pkgver
- make DESTDIR="$pkgdir" install-libLTLIBRARIES install-typelibsDATA
+check() {
+ meson test -C build
}
package_gobject-introspection() {
- pkgdesc="Introspection system for GObject-based libraries"
- depends=("gobject-introspection-runtime=$pkgver" 'python2-mako' 'python2')
- options=('!emptydirs')
+ depends+=("gobject-introspection-runtime=$pkgver-$pkgrel")
+
+ DESTDIR="$pkgdir" meson install -C build
+
+ python -m compileall -d /usr/lib/gobject-introspection "$pkgdir/usr/lib/gobject-introspection"
+ python -O -m compileall -d /usr/lib/gobject-introspection "$pkgdir/usr/lib/gobject-introspection"
+
+### Split runtime
+ mkdir -p "$srcdir/runtime/lib"
+ mv "$pkgdir"/usr/lib/{lib*,girepository-*} "$srcdir/runtime/lib"
+}
+
+package_gobject-introspection-runtime() {
+ pkgdesc+=" (runtime library)"
+ depends=(glib2)
- cd $pkgbase-$pkgver
- make DESTDIR="$pkgdir" install
- make DESTDIR="$pkgdir" uninstall-libLTLIBRARIES uninstall-typelibsDATA
+ mv "$srcdir/runtime" "$pkgdir/usr"
}
diff --git a/abs/core/intltool/PKGBUILD b/abs/core/intltool/PKGBUILD
index 3ddeaaf..36e18b7 100644
--- a/abs/core/intltool/PKGBUILD
+++ b/abs/core/intltool/PKGBUILD
@@ -1,19 +1,31 @@
-# $Id$
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=intltool
pkgver=0.51.0
-pkgrel=1
+pkgrel=4
pkgdesc="The internationalization tool collection"
arch=('any')
-url="https://edge.launchpad.net/intltool"
+url="https://launchpad.net/intltool"
license=('GPL')
depends=('perl-xml-parser')
-source=(http://launchpad.net/intltool/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz{,.asc})
-sha1sums=('a0c3bcb99d1bcfc5db70f8d848232a47c47da090'
- 'SKIP')
+source=(https://launchpad.net/intltool/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz{,.asc}
+ intltool-0.51.0-perl-5.26.patch
+ intltool-merge-Create-cache-file-atomically.patch
+ intltool_distcheck-fix.patch)
+sha256sums=('67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd'
+ 'SKIP'
+ '458f5d53ac358810879080f69b11649901babcacc14471c243eb850e9436d546'
+ '13bd6deb65dc94933f132919d4eea4c24354d7c1c1c9e5930cb6e70c75703763'
+ '58cb7d60796bc69c7d0865f106feb589d0271619e62f8741bff6f5ce1a2615ff')
validpgpkeys=('9EBD001680E8C8F9FAC61A9BE1A701D4C9DE75B5')
+prepare() {
+ cd ${pkgname}-${pkgver}
+ patch -Np1 -i ../intltool-0.51.0-perl-5.26.patch
+ patch -Np1 -i ../intltool-merge-Create-cache-file-atomically.patch
+ patch -Np1 -i ../intltool_distcheck-fix.patch
+}
+
build() {
cd ${pkgname}-${pkgver}
./configure --prefix=/usr
diff --git a/abs/core/intltool/intltool-0.51.0-perl-5.26.patch b/abs/core/intltool/intltool-0.51.0-perl-5.26.patch
new file mode 100644
index 0000000..8f6a0b3
--- /dev/null
+++ b/abs/core/intltool/intltool-0.51.0-perl-5.26.patch
@@ -0,0 +1,51 @@
+diff -Naur intltool-0.51.0.orig/intltool-update.in intltool-0.51.0/intltool-update.in
+--- intltool-0.51.0.orig/intltool-update.in 2015-03-09 02:39:54.000000000 +0100
++++ intltool-0.51.0/intltool-update.in 2017-07-21 22:35:10.613631420 +0200
+@@ -1062,13 +1062,13 @@
+ }
+ }
+
+- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
++ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/)
+ {
+ my $rest = $3;
+ my $untouched = $1;
+ my $sub = "";
+ # Ignore recursive definitions of variables
+- $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
++ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/;
+
+ return SubstituteVariable ("$untouched$sub$rest");
+ }
+@@ -1190,10 +1190,10 @@
+ $name =~ s/\(+$//g;
+ $version =~ s/\(+$//g;
+
+- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
+ }
+
+ if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m)
+@@ -1219,11 +1219,11 @@
+ $version =~ s/\(+$//g;
+ $bugurl =~ s/\(+$//g if (defined $bugurl);
+
+- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/);
++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
++ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/);
+ }
+
+ # \s makes this not work, why?
diff --git a/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch b/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch
new file mode 100644
index 0000000..677ea45
--- /dev/null
+++ b/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch
@@ -0,0 +1,38 @@
+From d328542bea50b9445c63cdf2454052392282a1ce Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Thu, 8 Oct 2015 16:25:47 -0400
+Subject: [PATCH] intltool-merge: Create cache file atomically
+
+It's going to be relatively common for build systems operating in
+parallel to run multiple copies of `intltool-merge`, yet the cache
+file is not created atomically (i.e. with the "open .tmp file and
+rename()" dance).
+
+I suspect (but have not yet determined conclusively) this is the cause
+of some systemd build issues where translations don't appear in the
+merged file.
+
+Regardless, this patch can't hurt.
+---
+ intltool-merge.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/intltool-merge.in b/intltool-merge.in
+index 1afa2a4..d1eba8f 100644
+--- a/intltool-merge.in
++++ b/intltool-merge.in
+@@ -371,9 +371,10 @@ sub create_cache
+
+ &create_translation_database;
+
+- open CACHE, ">$cache_file" || die;
++ open CACHE, ">$cache_file" . ".tmp" || die;
+ print CACHE join "\x01", %translations;
+ close CACHE;
++ rename("$cache_file" . ".tmp", "$cache_file");
+ }
+
+ sub load_cache
+--
+1.8.3.1
+
diff --git a/abs/core/intltool/intltool_distcheck-fix.patch b/abs/core/intltool/intltool_distcheck-fix.patch
new file mode 100644
index 0000000..6e7f198
--- /dev/null
+++ b/abs/core/intltool/intltool_distcheck-fix.patch
@@ -0,0 +1,30 @@
+diff -upr intltool-0.51.0-orig/intltool-update.in intltool-0.51.0/intltool-update.in
+--- intltool-0.51.0-orig/intltool-update.in 2016-07-29 14:08:06.276987000 +0200
++++ intltool-0.51.0/intltool-update.in 2016-07-29 14:11:09.562126918 +0200
+@@ -620,6 +620,14 @@ sub FindLeftoutFiles
+
+ my @result;
+
++ # If the builddir is a subdir of srcdir, the list of files found will be prefixed with
++ # an additional prefix (e.g. "_build/sub" for automake 1.15 make distcheck). Try to
++ # handle that, by removing those matches as well.
++ my $absbuilddir = Cwd::abs_path("..\/");
++ my $abssrcdir = Cwd::abs_path("$SRCDIR/..");
++ # Check if builddir is a subdir of srcdir
++ my ($abspath,$relpath) = split /\s*$abssrcdir\/\s*/, $absbuilddir, 2;
++
+ foreach (@buf_allfiles_sorted)
+ {
+ my $dummy = $_;
+@@ -628,7 +636,10 @@ sub FindLeftoutFiles
+ $srcdir =~ s#^../##;
+ $dummy =~ s#^$srcdir/../##;
+ $dummy =~ s#^$srcdir/##;
+- $dummy =~ s#_build/##;
++ if ($relpath)
++ {
++ $dummy =~ s#^$relpath/##;
++ }
+ if (!exists($in2{$dummy}))
+ {
+ push @result, $dummy
diff --git a/abs/core/libass/PKGBUILD b/abs/core/libass/PKGBUILD
index 9c38fe4..e6ab318 100644
--- a/abs/core/libass/PKGBUILD
+++ b/abs/core/libass/PKGBUILD
@@ -1,20 +1,20 @@
-# $Id$
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: G_Syme <demichan@mail.upb.de>
pkgname=libass
-pkgver=0.13.4
+pkgver=0.14.0
pkgrel=1
pkgdesc='A portable library for SSA/ASS subtitles rendering'
-arch=('i686' 'x86_64')
+arch=('x86_64')
url='https://github.com/libass/libass/'
license=('BSD')
-depends=('fribidi' 'fontconfig')
-makedepends=('pkg-config' 'yasm')
+depends=('fontconfig' 'fribidi' 'glib2' 'glibc' 'harfbuzz'
+ 'libfreetype.so')
+makedepends=('nasm')
provides=('libass.so')
source=("https://github.com/libass/libass/releases/download/${pkgver}/libass-${pkgver}.tar.xz")
-sha256sums=('d84a2fc89011b99d87fc47af91906622707c165d1860e9f774825ebbbc9c9fb6')
+sha256sums=('881f2382af48aead75b7a0e02e65d88c5ebd369fe46bc77d9270a94aa8fd38a2')
build() {
cd libass-${pkgver}
diff --git a/abs/core/libdrm/PKGBUILD b/abs/core/libdrm/PKGBUILD
index 59dd0ab..a1c902c 100644
--- a/abs/core/libdrm/PKGBUILD
+++ b/abs/core/libdrm/PKGBUILD
@@ -1,9 +1,8 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libdrm
-pkgver=2.4.90
-pkgrel=3
+pkgver=2.4.97
+pkgrel=1
pkgdesc="Userspace interface to kernel DRM services"
url="https://dri.freedesktop.org/"
arch=(x86_64)
@@ -12,14 +11,11 @@ depends=('libpciaccess')
makedepends=('valgrind' 'libxslt' 'docbook-xsl' 'meson')
checkdepends=('cairo')
replaces=('libdrm-new' 'libdrm-nouveau')
-source=(https://dri.freedesktop.org/$pkgname/$pkgname-$pkgver.tar.bz2{,.sig}
+source=(https://dri.freedesktop.org/$pkgname/$pkgname-$pkgver.tar.bz2 #{,.sig}
no-drmdevice-test.diff
- fix_mistake_in_initial_hole_size_calculation.diff
COPYING)
-sha512sums=('3d32d60c44ffdcb58667d0926e6af8d375332add1f243d8b2d37567aeef4e4b26d786294aeecf46c3dea94fc002fb73756567c457300703acfc21e32ffbd458c'
- 'SKIP'
+sha512sums=('3e08ee9d6c9ce265d783a59b51e22449905ea73aa27f25a082a1e9e1532f7c99e1c9f7cb966eb0970be2a08e2e5993dc9aa55093b1bff548689fdb465e7145ed'
'f1dd5d8c2270c092ccb8e4f92a0da9ab27706dfa22dcedd3fb2414b968ced9333c8bf62baf0219b822e43dce0d804d1dd5cc27d09b0afe8c01967c1784d4a4bb'
- '679ba7ef4f29cc4d511d5fbb7b505d8eade4cd3fc16eceaed2d1aa47947ebf31bac113ead5f2a1db8f5626ba290e9e1ffeab28c2abb924d0c85efe816c1201f8'
'b0ca349b882a4326b19f81f22804fabdb6fb7aef31cdc7b16b0a7ae191bfbb50c7daddb2fc4e6c33f1136af06d060a273de36f6f3412ea326f16fa4309fda660')
validpgpkeys=('B97BD6A80CAC4981091AE547FE558C72A67013C3') # Maarten Lankhorst <maarten.lankhorst@canonical.com>
validpgpkeys+=('215DEE688925CCB965BE5DA97C03D7797B6E1AE2') # Damien Lespiau <damien.lespiau@intel.com>
@@ -37,26 +33,22 @@ validpgpkeys+=('CFD0E654BCBE5DD2D030D222CFCC297C6D0A120B') # Lucas Stach <l.stac
prepare() {
cd $pkgname-$pkgver
- # Fix version
- sed -i 's/2\.4\.89/2.4.90/' meson.build
-
# Fails in a container; autotools skipped this one already
patch -Np1 -i ../no-drmdevice-test.diff
- # FS#57576; fix amdgpu cards
- patch -Np1 -i ../fix_mistake_in_initial_hole_size_calculation.diff
}
build() {
- arch-meson $pkgname-$pkgver build -Dudev=true
+ arch-meson $pkgname-$pkgver build \
+ -Dudev=false \
+ -Dvalgrind=false
ninja -C build
}
check() {
- cd build
- meson test
+ meson test -C build
}
package() {
- DESTDIR="$pkgdir" ninja -C build install
+ DESTDIR="$pkgdir" meson install -C build
install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING
}
diff --git a/abs/core/libdrm/fix_mistake_in_initial_hole_size_calculation.diff b/abs/core/libdrm/fix_mistake_in_initial_hole_size_calculation.diff
deleted file mode 100644
index 8998e45..0000000
--- a/abs/core/libdrm/fix_mistake_in_initial_hole_size_calculation.diff
+++ /dev/null
@@ -1,39 +0,0 @@
-From 33a2851ab9bc3cd8a68bedf4cf0fdc549b0f3596 Mon Sep 17 00:00:00 2001
-From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
-Date: Mon, 19 Feb 2018 02:18:36 -0500
-Subject: amdgpu: Fix mistake in initial hole size calculation.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
-Acked-by: Christian König <christian.koenig@amd.com>
----
- amdgpu/amdgpu_vamgr.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/amdgpu/amdgpu_vamgr.c b/amdgpu/amdgpu_vamgr.c
-index 722067f..5840042 100644
---- a/amdgpu/amdgpu_vamgr.c
-+++ b/amdgpu/amdgpu_vamgr.c
-@@ -57,7 +57,7 @@ drm_private void amdgpu_vamgr_init(struct amdgpu_bo_va_mgr *mgr, uint64_t start,
- pthread_mutex_init(&mgr->bo_va_mutex, NULL);
- pthread_mutex_lock(&mgr->bo_va_mutex);
- n = calloc(1, sizeof(struct amdgpu_bo_va_hole));
-- n->size = mgr->va_max;
-+ n->size = mgr->va_max - start;
- n->offset = start;
- list_add(&n->list, &mgr->va_holes);
- pthread_mutex_unlock(&mgr->bo_va_mutex);
-@@ -80,6 +80,7 @@ amdgpu_vamgr_find_va(struct amdgpu_bo_va_mgr *mgr, uint64_t size,
- struct amdgpu_bo_va_hole *hole, *n;
- uint64_t offset = 0, waste = 0;
-
-+
- alignment = MAX2(alignment, mgr->va_alignment);
- size = ALIGN(size, mgr->va_alignment);
-
---
-cgit v1.1
-
-
diff --git a/abs/core/libdvdnav/PKGBUILD b/abs/core/libdvdnav/PKGBUILD
index 4bd01d5..d4bf282 100644
--- a/abs/core/libdvdnav/PKGBUILD
+++ b/abs/core/libdvdnav/PKGBUILD
@@ -1,25 +1,27 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Arjan <arjan@archlinux.org>
# contributor Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=libdvdnav
-pkgver=5.0.3
+pkgver=6.0.0
pkgrel=1
pkgdesc="The library for xine-dvdnav plugin."
-arch=('i686' 'x86_64')
+arch=('x86_64')
license=('GPL')
-url="http://dvdnav.mplayerhq.hu/"
+url="https://www.videolan.org/developers/libdvdnav.html"
depends=('libdvdread')
makedepends=('git')
-source=(git+https://code.videolan.org/videolan/libdvdnav.git#tag=$pkgver
- fix-crash-describe_title.patch)
-sha256sums=('SKIP'
- '6a8e9c777dd9dbfa8a7f981796bd7a60412e3a5c7a8400253c567d956412c64b')
+_commit=dcb9109e45ccd304ec82a7c7bf46cca63620adf9 # tags/6.0.0^0
+source=("git+https://code.videolan.org/videolan/libdvdnav.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed -e 's/-/+/g'
+}
prepare() {
cd $pkgname
- patch -Np1 -i ../fix-crash-describe_title.patch
autoreconf -fi
}
diff --git a/abs/core/libdvdnav/fix-crash-describe_title.patch b/abs/core/libdvdnav/fix-crash-describe_title.patch
deleted file mode 100644
index 1c07336..0000000
--- a/abs/core/libdvdnav/fix-crash-describe_title.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8a270d6dd40ac43c98c948fe9d10e5bcb4aa3d41 Mon Sep 17 00:00:00 2001
-From: Jean-Baptiste Kempf <jb@videolan.org>
-Date: Tue, 1 Sep 2015 16:00:59 +0200
-Subject: [PATCH] Fix crashes with some DVDs on describe_title
-
-This is a stop-over, but the actual issue is not fixed
----
- src/searching.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/searching.c b/src/searching.c
-index 70c0f85..f638b61 100644
---- a/src/searching.c
-+++ b/src/searching.c
-@@ -644,6 +644,11 @@ uint32_t dvdnav_describe_title_chapters(dvdnav_t *this, int32_t title, uint64_t
- if(!tmp)
- goto fail;
-
-+ if(!ptt) {
-+ printerr("ptt NULL");
-+ goto fail;
-+ }
-+
- length = 0;
- for(i=0; i<parts; i++) {
- uint32_t cellnr, endcellnr;
---
-1.7.10.4
-
diff --git a/abs/core/libdvdread/PKGBUILD b/abs/core/libdvdread/PKGBUILD
index 04e4431..4bab96e 100644
--- a/abs/core/libdvdread/PKGBUILD
+++ b/abs/core/libdvdread/PKGBUILD
@@ -1,22 +1,26 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=libdvdread
-pkgver=5.0.4
+pkgver=6.0.0
pkgrel=1
pkgdesc="Provides a simple foundation for reading DVD video disks"
-arch=(i686 x86_64)
-url="http://dvdnav.mplayerhq.hu"
+arch=(x86_64)
+url="https://www.videolan.org/developers/libdvdnav.html"
license=('GPL')
depends=('glibc')
makedepends=('libdvdcss' 'git')
optdepends=('libdvdcss: for decoding encrypted DVDs')
-_gitver=5ec409508803037dfa931591aef93851458d1d2a
-source=(git+https://code.videolan.org/videolan/libdvdread.git#commit=$_gitver)
+_commit=95fdbe8337d2ff31dcfb68f35f3e4441dc27d92f # tags/6.0.0^0
+source=("git+https://code.videolan.org/videolan/libdvdread.git#commit=$_commit")
sha256sums=('SKIP')
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed -e 's/-/+/g'
+}
+
prepare() {
cd $pkgname
autoreconf -fi
diff --git a/abs/core/libglvnd/PKGBUILD b/abs/core/libglvnd/PKGBUILD
index e589b42..40df6b6 100644
--- a/abs/core/libglvnd/PKGBUILD
+++ b/abs/core/libglvnd/PKGBUILD
@@ -1,18 +1,17 @@
-# $Id: PKGBUILD 249779 2015-10-27 00:47:25Z eric $
# Maintainer: Felix Yan <felixonmars@archlinux.org>
pkgname=libglvnd
-pkgver=1.0.0
+pkgver=1.1.0
pkgrel=1
pkgdesc="The GL Vendor-Neutral Dispatch library"
arch=('x86_64')
url="https://github.com/NVIDIA/libglvnd"
license=('custom:BSD-like')
-makedepends=('libxext' 'libx11' 'glproto' 'python2')
+makedepends=('libxext' 'libx11' 'glproto' 'python')
provides=('libgl' 'libegl' 'libgles')
source=("$pkgname-$pkgver.tar.gz::https://github.com/NVIDIA/libglvnd/archive/v$pkgver.tar.gz"
LICENSE)
-sha512sums=('c6040b0a508a6b74d7113f8e375fcaf93ec6f2875504953f30e2882e58e22f954bd4027a7d9ab8ac41abef266039e5834fdaf4ce2a69d5d98acf3bbdd54f04b6'
+sha512sums=('40c81f334f44927af4ebdd291f4447d4c01cbaa9f39ebcd519c86e360357b7427b574514a70b62c9538dc90fa312ed632f49cc5e818a800e23b250ec92f4ae29'
'bf0f4a7e04220a407400f89226ecc1f798cc43035f2538cc8860e5088e1f84140baf0d4b0b28f66e4b802d4d6925769a1297c24e1ba39c1c093902b2931781a5')
build() {
diff --git a/abs/core/libglvnd/__changelog b/abs/core/libglvnd/__changelog
deleted file mode 100644
index 99dab7b..0000000
--- a/abs/core/libglvnd/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-PKGBUILD: change python dep to python2
diff --git a/abs/core/libhdhomerun/PKGBUILD b/abs/core/libhdhomerun/PKGBUILD
index 347baa2..8aa590e 100644
--- a/abs/core/libhdhomerun/PKGBUILD
+++ b/abs/core/libhdhomerun/PKGBUILD
@@ -2,7 +2,7 @@
# Contributor: Grey Christoforo <first name [at] last name [dot] net>
pkgname=libhdhomerun
-pkgver=20170930
+pkgver=20180817
pkgrel=1
pkgdesc="Library and command line utility for interfacing with HDHomeRun device"
arch=('i686' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64')
@@ -12,7 +12,7 @@ optdepends=('hdhomerun-firmware-bin: firmware for hdhomerun devices'
'hdhomerun_config_gui: hdhomerun configuration gui')
source=("http://download.silicondust.com/hdhomerun/${pkgname}_${pkgver}.tgz")
-sha256sums=('0cb392231961fab6c226c69012503e2ebe46ac0f13512689bd37d6cf9ee838a1')
+sha256sums=('437888b27206f526827ee7a4c57c1c167a36483b0445232e07fb7bb7ee854b42')
build() {
cd "$srcdir/$pkgname"
diff --git a/abs/core/libidn2/PKGBUILD b/abs/core/libidn2/PKGBUILD
index c0a1a25..f20827a 100644
--- a/abs/core/libidn2/PKGBUILD
+++ b/abs/core/libidn2/PKGBUILD
@@ -1,30 +1,31 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Daurnimator <quae@daurnimator.com>
pkgname=libidn2
-pkgver=2.0.4
+pkgver=2.1.1
pkgrel=2
pkgdesc="Free software implementation of IDNA2008, Punycode and TR46"
arch=('x86_64')
url="https://www.gnu.org/software/libidn/#libidn2"
license=('GPL2' 'LGPL3')
depends=('libunistring')
-makedepends=('gtk-doc' 'ruby-ronn')
+makedepends=('ruby-ronn')
+provides=('libidn2.so')
source=(https://ftp.gnu.org/gnu/libidn/$pkgname-$pkgver.tar.gz{,.sig})
-sha256sums=('644b6b03b285fb0ace02d241d59483d98bc462729d8bb3608d5cad5532f3d2f0'
+sha256sums=('95416080329298a13269e13175041b530cec3d98b54cafae9424b8dfd22078b1'
'SKIP')
validpgpkeys=('1CB27DBC98614B2D5841646D08302DB6A2670428')
prepare() {
cd $pkgname-$pkgver
- # https://gitlab.com/libidn/libidn2/issues/39
- autoreconf -fvi
}
build() {
cd $pkgname-$pkgver
- ./configure --prefix=/usr
+
+ ./configure \
+ --prefix=/usr \
+ --disable-static
make
}
diff --git a/abs/core/libpsl/PKGBUILD b/abs/core/libpsl/PKGBUILD
index 5689be0..329b8c7 100644
--- a/abs/core/libpsl/PKGBUILD
+++ b/abs/core/libpsl/PKGBUILD
@@ -2,16 +2,17 @@
# Contributor: Darshit Shah <darnir@gmail.com>
pkgname=libpsl
-pkgver=0.19.1
-pkgrel=1
+pkgver=0.20.2
+pkgrel=3
pkgdesc='Public Suffix List library'
url='https://github.com/rockdaboot/libpsl'
arch=('x86_64')
license=('MIT')
depends=('libidn2' 'libunistring')
makedepends=('libxslt' 'python' 'publicsuffix-list' 'gtk-doc')
+provides=('libpsl.so')
source=(https://github.com/rockdaboot/libpsl/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz)
-sha512sums=('86bb2f35764491c65cacec8cd5de97c7d7e1c4d1cc2590d54f394ed17acc75922494115019631b2d930d64dbdc73c266efb323036ac7e52131111287ee6381d5')
+sha512sums=('fa9f6f7f0447d9fe00f5dfca5262c56ff26217eea44d0f7fc1e5d982224c41874e753f0aa06dd9e5d7d03d4f04e3dacd4f36034cc8dd0fc6e2c28b49a23e62fe')
prepare() {
cd ${pkgname}-${pkgver}
diff --git a/abs/core/libxml2/PKGBUILD b/abs/core/libxml2/PKGBUILD
index 2ab74b4..594b4ef 100644
--- a/abs/core/libxml2/PKGBUILD
+++ b/abs/core/libxml2/PKGBUILD
@@ -1,31 +1,30 @@
-# $Id$
+# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: John Proctor <jproctor@prium.net>
pkgname=libxml2
-pkgver=2.9.8
+pkgver=2.9.9
pkgrel=1
-pkgdesc="XML parsing library, version 2"
-url="http://www.xmlsoft.org/"
+pkgdesc='XML parsing library, version 2'
+url='http://www.xmlsoft.org/'
arch=(x86_64)
license=(MIT)
depends=(zlib readline ncurses xz icu)
makedepends=(python2 python git)
-_commit=18890f471c420411aa3c989e104d090966ec9dbf # tags/v2.9.8^0
-source=(git+https://git.gnome.org/browse/libxml2#commit=$_commit
+_commit=f8a8c1f59db355b46962577e7b74f1a1e8149dc6 # tags/v2.9.9^0
+source=("git+https://git.gnome.org/browse/libxml2#commit=$_commit"
https://www.w3.org/XML/Test/xmlts20130923.tar.gz)
sha256sums=('SKIP'
'9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f')
pkgver() {
cd $pkgname
- git describe --tags | sed 's/-rc/rc/;s/^v//;s/-/+/g'
+ git describe --always --tags | sed 's/-rc/rc/;s/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
prepare() {
mkdir build-py{2,3}
-
cd $pkgname
NOCONFIGURE=1 ./autogen.sh
}
@@ -57,5 +56,7 @@ check() {
package() {
make -C build-py2 DESTDIR="$pkgdir" install
make -C build-py3/python DESTDIR="$pkgdir" install
- install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 build-py2/COPYING
+ install -Dm 644 build-py2/COPYING -t "$pkgdir/usr/share/licenses/$pkgname"
}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/core/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch b/abs/core/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch
deleted file mode 100644
index d05d4cb..0000000
--- a/abs/core/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur libxml2-2.9.4.orig/python/types.c libxml2-2.9.4/python/types.c
---- libxml2-2.9.4.orig/python/types.c 2016-02-09 03:17:33.000000000 -0700
-+++ libxml2-2.9.4/python/types.c 2016-12-21 12:34:06.755650986 -0700
-@@ -31,8 +31,6 @@
- const char *mode;
-
- fd = PyObject_AsFileDescriptor(f);
-- if (!_PyVerify_fd(fd))
-- return(NULL);
- /*
- * Get the flags on the fd to understand how it was opened
- */
diff --git a/abs/core/libxslt/PKGBUILD b/abs/core/libxslt/PKGBUILD
index 3f8af1b..dd40c30 100644
--- a/abs/core/libxslt/PKGBUILD
+++ b/abs/core/libxslt/PKGBUILD
@@ -1,9 +1,8 @@
-# $Id$
# Maintainer: Eric Belanger <eric@archlinux.org>
# Contributor: John Proctor <jproctor@prium.net>
pkgname=libxslt
-pkgver=1.1.32+3+g32c8821
+pkgver=1.1.33
pkgrel=1
pkgdesc="XML stylesheet transformation library"
url="http://xmlsoft.org/XSLT/"
@@ -12,8 +11,8 @@ license=(custom)
depends=(libxml2 libgcrypt)
makedepends=(python2 git)
checkdepends=(docbook-xml python)
-_commit=32c88216ddbaa0f3491f45bc84ee89285c6a1129 # master
-source=("git+https://git.gnome.org/browse/libxslt#commit=$_commit")
+_commit=f1eb717f04d9cc297cc5e58e94b81ac96f47e741 # tags/v1.1.33^0
+source=("git+https://gitlab.gnome.org/GNOME/libxslt.git#commit=$_commit")
sha256sums=('SKIP')
pkgver() {
diff --git a/abs/core/lighttpd/PKGBUILD b/abs/core/lighttpd/PKGBUILD
index 365d92e..23614cb 100644
--- a/abs/core/lighttpd/PKGBUILD
+++ b/abs/core/lighttpd/PKGBUILD
@@ -2,14 +2,14 @@
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgname=lighttpd
-pkgver=1.4.48
+pkgver=1.4.51
pkgrel=1
pkgdesc='A secure, fast, compliant and very flexible web-server'
license=('custom')
arch=('i686' 'x86_64')
url="http://www.lighttpd.net/"
depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap' 'php-cgi')
-makedepends=('fcgi' 'libmysqlclient' 'lua51' 'libxml2' 'e2fsprogs' 'sqlite' 'gdbm' 'pkgconfig')
+makedepends=('fcgi' 'libmysqlclient' 'lua' 'libxml2' 'e2fsprogs' 'sqlite' 'gdbm' 'pkgconfig')
optdepends=('libxml2: mod_webdav' \
'e2fsprogs: mod_webdav' \
'libmysqlclient: mod_mysql_vhost' \
@@ -62,7 +62,7 @@ package() {
install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
}
-md5sums=('fe9ea4dccacd9738be03245c364bc055'
+md5sums=('c23b731846163620c24576ec0f145546'
'42d106b101d21ffd76ed9f3f1621e164'
'fd4afd737fd16a82ba99b9a99533d34b'
'62779511e3f1127c3cc9b94c49f99c29'
diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 35a8d82..f275e0d 100755
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,8 +1,8 @@
pkgname=linhes-theme
-pkgver=8.5.1
-pkgrel=10
+pkgver=8.6.0
+pkgrel=2
pkgdesc="Default LinHES MythTV theme"
-arch=('i686' 'x86_64')
+arch=('x86_64')
license=('GPL2')
url="http://linhes.org/"
@@ -116,11 +116,11 @@ md5sums=('2dca856c2a4d1f959473512c94e43b60'
'dd1e013e806efc26049ea89637a51f83'
'9fe3371a8b964a7028126405cfaa330b'
'814b52b7ad9a6918585764f5790d1c3b'
- 'a65ab8c1c409e89358373aa51f0b3eb3'
+ '373e1fd01ba18640992bd5d2e7fd7bfe'
'384871202030f41148536e2e89bb1801'
'8efbd524cef4dd3f5fbe5b7d5ad854f0'
'8312aff444945f80a76100696c81cb2e'
- '2803a328cd276393964240842da03010'
+ 'f1e0b73f5118c0a6f8c75e47beefdcdc'
'4125880d1739b196a8041ecc3d773ee2'
'5a8fb2a5f0e657d52be6f0a6a006ce72'
'274b6f8cb5cd82c5ce28422decd7754b'
@@ -136,6 +136,6 @@ md5sums=('2dca856c2a4d1f959473512c94e43b60'
'e8ac15e38b3dc99c9e889e439ba356de'
'e8cf0d3a55ba3be47deae55c05432141'
'3f600b966bd813dd27f620762ddb3ac8'
- 'a2d7c855d78b4fa5e9714509891a6cb9'
+ 'e92bd22caf09a1d2b709f4d5b2519540'
'b51ef0cbf8ed2d3a8c1a8257a89aceff'
'09ad14842f828b7a8d24070ec8214fe5')
diff --git a/abs/core/linhes-theme/schedule-ui.xml.patch b/abs/core/linhes-theme/schedule-ui.xml.patch
index 729b250..33d6119 100644
--- a/abs/core/linhes-theme/schedule-ui.xml.patch
+++ b/abs/core/linhes-theme/schedule-ui.xml.patch
@@ -1,5 +1,5 @@
--- schedule-ui.xml.orig 2018-06-06 17:48:28.091163462 +0000
-+++ schedule-ui.xml 2018-06-06 18:04:00.119905930 +0000
++++ schedule-ui.xml 2019-03-11 20:58:29.671094834 +0000
@@ -119,14 +119,14 @@
<channels>6</channels>
<timeslots>5</timeslots>
@@ -251,3 +251,12 @@
</statetype>
</buttonlist>
+@@ -3583,7 +3661,7 @@
+ <area>112,65,180,40</area>
+ <font>basesmall</font>
+ <align>right,vcenter</align>
+- <value>TMDB/TVDB #:</value>
++ <value>Video #:</value>
+ </textarea>
+
+ <textedit name="inetref_edit" from="base_textedit">
diff --git a/abs/core/linhes-theme/standardsetting-ui.xml b/abs/core/linhes-theme/standardsetting-ui.xml
index a50e985..255b120 100644
--- a/abs/core/linhes-theme/standardsetting-ui.xml
+++ b/abs/core/linhes-theme/standardsetting-ui.xml
@@ -121,6 +121,7 @@
<group name="select_bar" from="base_select_bar_active_group">
<area>0,0,100%,100%</area>
</group>
+
<textarea name="buttontext">
<area>15,0,50%-5,30</area>
</textarea>
@@ -196,8 +197,14 @@
<group name="select_bar" from="base_select_bar_selectedactive_group">
<area>0,0,100%,100%</area>
</group>
+
+ <imagetype name="parentarrow">
+ <position>5,50%-15</position>
+ <filename>images/lists_left_arrow_large.png</filename>
+ </imagetype>
+
<textarea name="buttontext">
- <area>15,0,1194,64</area>
+ <area>33,0,1194,64</area>
<font>basesmallyellow</font>
<align>left,vcenter</align>
<scroll direction="horizontal" />
@@ -286,6 +293,10 @@
</shape>
</statetype>
+ <imagetype name="buttonarrow">
+ <position>100%-23,50%-15</position>
+ <filename>images/lists_right_arrow_large.png</filename>
+ </imagetype>
</state>
<state name="disabledactive" from="active">
<textarea name="buttontext">
diff --git a/abs/core/linhes-theme/video-ui.xml.patch b/abs/core/linhes-theme/video-ui.xml.patch
index 2a336ef..5f56372 100644
--- a/abs/core/linhes-theme/video-ui.xml.patch
+++ b/abs/core/linhes-theme/video-ui.xml.patch
@@ -1,5 +1,5 @@
--- video-ui.xml.orig 2018-04-17 14:44:43.827360598 +0000
-+++ video-ui.xml 2018-04-17 14:47:36.544853593 +0000
++++ video-ui.xml 2019-03-09 13:31:34.326974622 +0000
@@ -58,8 +58,8 @@
<textarea name="label" from="basetextarea">
<area>10,4,543,70</area>
@@ -1297,6 +1297,15 @@
</textedit>
<textarea name="tagline_text" from="basetextarea">
+@@ -2418,7 +2482,7 @@
+
+ <textarea name="inetref_text" from="basetextarea">
+ <area>556,86,124,36</area>
+- <value>TMDB:</value>
++ <value>Video #:</value>
+ <align>right,vcenter</align>
+ </textarea>
+
@@ -2947,83 +3011,85 @@
<multiline>no</multiline>
<font>basesmalldarkyellow</font>
diff --git a/abs/core/linux/PKGBUILD b/abs/core/linux/PKGBUILD
index 2e481b0..085929b 100644
--- a/abs/core/linux/PKGBUILD
+++ b/abs/core/linux/PKGBUILD
@@ -4,7 +4,7 @@
pkgbase=linux
#pkgbase=linux-custom
_srcname=linux-4.9
-pkgver=4.9.109
+pkgver=4.9.159
pkgrel=1
arch=('x86_64')
url="https://www.kernel.org/"
@@ -12,7 +12,7 @@ license=('GPL2')
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf' 'git')
options=('!strip')
source=(https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.{xz,sign}
- https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.{xz,sign}
+ https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz
# the main kernel config files
'config'
# pacman hook for initramfs regeneration
@@ -25,8 +25,7 @@ source=(https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.{xz,sign}
# https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc
sha256sums=('029098dcffab74875e086ae970e3828456838da6e0ba22ce3f64ef764f3d7f1a'
'SKIP'
- 'e688e9626b60b6e3ded8545803f6c9a81ee8dcdc12c908bba757793d3ea2e427'
- 'SKIP'
+ '97baf52684cacf4b644172389366b475048774b61f74bf1a3a856d09d26f75df'
'a11c6643d5b39bd4a37caa1ff3135cecdd1239348580b36e0abaaa425b5ced07'
'834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0'
'1f036f7464da54ae510630f0edb69faa115287f86d9f17641197ffda8cfd49e0'
diff --git a/abs/core/linux/linux.install.pkg b/abs/core/linux/linux.install.pkg
index c9b1687..0437fef 100644
--- a/abs/core/linux/linux.install.pkg
+++ b/abs/core/linux/linux.install.pkg
@@ -2,7 +2,7 @@
# arg 2: the old package version
KERNEL_NAME=
-KERNEL_VERSION=4.9.109-1-ARCH
+KERNEL_VERSION=4.9.159-1-ARCH
post_install () {
# updating module dependencies
diff --git a/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch b/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch
deleted file mode 100644
index 68118f4..0000000
--- a/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in
---- mesa-12.0.3/src/mesa/gl.pc.in.jx 2016-01-18 02:39:26.000000000 -0500
-+++ mesa-12.0.3/src/mesa/gl.pc.in 2016-10-25 13:06:44.013159358 -0400
-@@ -7,7 +7,7 @@ Name: gl
- Description: Mesa OpenGL library
- Requires.private: @GL_PC_REQ_PRIV@
- Version: @PACKAGE_VERSION@
--Libs: -L${libdir} -l@GL_LIB@
-+Libs: -L${libdir} -lGL
- Libs.private: @GL_PC_LIB_PRIV@
- Cflags: -I${includedir} @GL_PC_CFLAGS@
- glx_tls: @GLX_TLS@
diff --git a/abs/core/mesa/LICENSE b/abs/core/mesa/LICENSE
index ae33d27..060f4a9 100644
--- a/abs/core/mesa/LICENSE
+++ b/abs/core/mesa/LICENSE
@@ -1,33 +1,34 @@
+The Mesa 3D Graphics Library
+
Disclaimer
-Mesa is a 3-D graphics library with an API which is very similar to
-that of OpenGL*
-To the extent that Mesa utilizes the OpenGL command syntax or state
-machine, it is being used with authorization from Silicon Graphics,
-Inc.(SGI). However, the author does not possess an OpenGL license
-from SGI, and makes no claim that Mesa is in any way a compatible
-replacement for OpenGL or associated with SGI. Those who want a
-licensed implementation of OpenGL should contact a licensed
-vendor.
+ Mesa is a 3-D graphics library with an API which is very similar to
+ that of [1]OpenGL.* To the extent that Mesa utilizes the OpenGL command
+ syntax or state machine, it is being used with authorization from
+ [2]Silicon Graphics, Inc.(SGI). However, the author does not possess an
+ OpenGL license from SGI, and makes no claim that Mesa is in any way a
+ compatible replacement for OpenGL or associated with SGI. Those who
+ want a licensed implementation of OpenGL should contact a licensed
+ vendor.
-Please do not refer to the library as MesaGL (for legal
-reasons). It's just Mesa or The Mesa 3-D graphics
-library
+ Please do not refer to the library as MesaGL (for legal reasons). It's
+ just Mesa or The Mesa 3-D graphics library.
-* OpenGL is a trademark of Silicon Graphics Incorporated.
+ * OpenGL is a trademark of [3]Silicon Graphics Incorporated.
License / Copyright Information
-The Mesa distribution consists of several components. Different copyrights
-and licenses apply to different components. For example, GLUT is copyrighted
-by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa
-device drivers are copyrighted by their authors. See below for a list of
-Mesa's main components and the license for each.
+ The Mesa distribution consists of several components. Different
+ copyrights and licenses apply to different components. For example, the
+ GLX client code uses the SGI Free Software License B, and some of the
+ Mesa device drivers are copyrighted by their authors. See below for a
+ list of Mesa's main components and the license for each.
-The core Mesa library is licensed according to the terms of the MIT license.
-This allows integration with the XFree86, Xorg and DRI projects.
+ The core Mesa library is licensed according to the terms of the MIT
+ license. This allows integration with the XFree86, Xorg and DRI
+ projects.
-The default Mesa license is as follows:
+ The default Mesa license is as follows:
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
@@ -44,39 +45,39 @@ in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Attention, Contributors
-When contributing to the Mesa project you must agree to the licensing terms
-of the component to which you're contributing.
-The following section lists the primary components of the Mesa distribution
-and their respective licenses.
-
+ When contributing to the Mesa project you must agree to the licensing
+ terms of the component to which you're contributing. The following
+ section lists the primary components of the Mesa distribution and their
+ respective licenses.
Mesa Component Licenses
-Component Location Primary Author License
-----------------------------------------------------------------------------
-Main Mesa code src/mesa/ Brian Paul Mesa (MIT)
+Component Location License
+------------------------------------------------------------------
+Main Mesa code src/mesa/ MIT
-Device drivers src/mesa/drivers/* See drivers See drivers
+Device drivers src/mesa/drivers/* MIT, generally
-Ext headers include/GL/glext.h SGI SGI Free B
- include/GL/glxext.h
+Gallium code src/gallium/ MIT
-GLUT src/glut/ Mark Kilgard Mark's copyright
-
-Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL
+Ext headers include/GL/glext.h Khronos
+ include/GL/glxext.h
-SGI GLU library src/glu/sgi/ SGI SGI Free B
+GLX client code src/glx/ SGI Free Software License B
-demo programs progs/demos/ various see source files
+C11 thread include/c11/threads*.h Boost (permissive) emulation
-X demos progs/xdemos/ Brian Paul see source files
+ In general, consult the source files for license terms.
-SGI demos progs/samples/ SGI SGI copyright
+References
-RedBook demos progs/redbook/ SGI SGI copyright
+ 1. https://www.opengl.org/
+ 2. https://www.sgi.com/
+ 3. https://www.sgi.com/
diff --git a/abs/core/mesa/PKGBUILD b/abs/core/mesa/PKGBUILD
index 504d32b..8cfff58 100644
--- a/abs/core/mesa/PKGBUILD
+++ b/abs/core/mesa/PKGBUILD
@@ -1,110 +1,115 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgbase=mesa
pkgname=('opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'libva-mesa-driver' 'mesa-vdpau' 'mesa')
-pkgver=17.3.6
+pkgdesc="An open-source implementation of the OpenGL specification"
+pkgver=18.3.4
pkgrel=1
arch=('x86_64')
-makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto'
+makedepends=('python-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto'
'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols'
- 'elfutils' 'llvm' 'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors')
+ 'elfutils' 'llvm' 'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors'
+ 'libxrandr' 'meson')
url="https://www.mesa3d.org/"
license=('custom')
source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
- LICENSE
- 0001-glvnd-fix-gl-dot-pc.patch)
-sha512sums=('5164ed5a1d3d25031b712a9f443f0e467a29b2bca0a1aa11324ed5c10279411979c9c7482825053926a813e76c58b78a3439c7c81fcd51a7808f53977080828f'
+ get-program-name-based-on-path.patch
+ LICENSE)
+sha512sums=('e4ead944ba053aa05425e9e199d633f576dfa424976253fc32438e8db6da5e8d381122e4c4b7fb18f94177421f208bab5567cfec8d2692d104e266483ca02a99'
'SKIP'
- '25da77914dded10c1f432ebcbf29941124138824ceecaf1367b3deedafaecabc082d463abcfa3d15abff59f177491472b505bcb5ba0c4a51bb6b93b4721a23c2'
- '75849eca72ca9d01c648d5ea4f6371f1b8737ca35b14be179e14c73cc51dca0739c333343cdc228a6d464135f4791bcdc21734e2debecd29d57023c8c088b028')
-validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov@gmail.com>
-validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # Andres Gomez <tanty@igalia.com>
-validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez@igalia.com>"
-
+ '3c851ec0f1d8c1d918756c5b5315901d2a9c1de22624378bb2ba49ae8d7abc0b6c015a91c455f1d40d50532939f60db81cab0d7c9f832d41162c684582783fa6'
+ 'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7')
+validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l.velikov@gmail.com>
+ '946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez <tanty@igalia.com>
+ 'E3E8F480C52ADD73B278EE78E1ECBE07D7D70895' # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez@igalia.com>
+ 'A5CC9FEC93F2F837CB044912336909B6B25FADFA' # Juan A. Suarez Romero <jasuarez@igalia.com>
+ '71C4B75620BC75708B4BDB254C95FAAB3EB073EC') # Dylan Baker <dylan@pnwbakers.com>
+
prepare() {
- cd ${srcdir}/mesa-${pkgver}
+ cd mesa-${pkgver}
- # glvnd support patches - from Fedora
- # non-upstreamed ones
- patch -Np1 -i ../0001-glvnd-fix-gl-dot-pc.patch
-
- autoreconf -fiv
+ # Needed in order to target Chromium in drirc (included upstream in Mesa 19)
+ patch -Np1 -i ../get-program-name-based-on-path.patch
}
build() {
- cd ${srcdir}/mesa-${pkgver}
-
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast,virgl,swr \
- --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
- --with-platforms=x11,drm,wayland \
- --with-vulkan-drivers=intel,radeon \
- --disable-xvmc \
- --enable-llvm \
- --enable-llvm-shared-libs \
- --enable-shared-glapi \
- --enable-libglvnd \
- --enable-libunwind \
- --enable-lmsensors \
- --enable-egl \
- --enable-glx \
- --enable-glx-tls \
- --enable-gles1 \
- --enable-gles2 \
- --enable-gbm \
- --enable-dri \
- --enable-gallium-osmesa \
- --enable-gallium-extra-hud \
- --enable-texture-float \
- --enable-xa \
- --enable-vdpau \
- --enable-omx-bellagio \
- --enable-nine \
- --enable-opencl \
- --enable-opencl-icd \
- --with-clang-libdir=/usr/lib
-
- make
-
- # fake installation
- mkdir $srcdir/fakeinstall
- make DESTDIR=${srcdir}/fakeinstall install
+ # -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast,swr ### swr doesn't build https://bugs.freedesktop.org/show_bug.cgi?id=107865
+
+ arch-meson mesa-$pkgver build \
+ -D b_lto=false \
+ -D b_ndebug=true \
+ -D platforms=x11,wayland,drm,surfaceless \
+ -D dri-drivers=i915,i965,r100,r200,nouveau \
+ -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast \
+ -D vulkan-drivers=amd,intel \
+ -D swr-arches=avx,avx2 \
+ -D dri3=true \
+ -D egl=true \
+ -D gallium-extra-hud=true \
+ -D gallium-nine=true \
+ -D gallium-omx=bellagio \
+ -D gallium-opencl=icd \
+ -D gallium-va=true \
+ -D gallium-vdpau=true \
+ -D gallium-xa=true \
+ -D gallium-xvmc=false \
+ -D gbm=true \
+ -D gles1=true \
+ -D gles2=true \
+ -D glvnd=true \
+ -D glx=dri \
+ -D libunwind=true \
+ -D llvm=true \
+ -D lmsensors=true \
+ -D osmesa=gallium \
+ -D shared-glapi=true \
+ -D texture-float=true \
+ -D valgrind=false
+
+ # Print config
+ meson configure build
+
+ ninja -C build
+
+ # fake installation to be seperated into packages
+ # outside of fakeroot but mesa doesn't need to chown/mod
+ DESTDIR="${srcdir}/fakeinstall" ninja -C build install
+}
+
+_install() {
+ local src f dir
+ for src; do
+ f="${src#fakeinstall/}"
+ dir="${pkgdir}/${f%/*}"
+ install -m755 -d "${dir}"
+ mv -v "${src}" "${dir}/"
+ done
}
package_opencl-mesa() {
pkgdesc="OpenCL support for AMD/ATI Radeon mesa drivers"
- depends=('expat' 'libdrm' 'libelf' 'lm_sensors' 'libunwind' 'libclc' 'clang')
+ depends=('expat' 'libdrm' 'libelf' 'libclc' 'clang')
optdepends=('opencl-headers: headers necessary for OpenCL development')
provides=('opencl-driver')
- install -m755 -d ${pkgdir}/etc
- cp -rv ${srcdir}/fakeinstall/etc/OpenCL ${pkgdir}/etc/
-
- install -m755 -d ${pkgdir}/usr/lib/gallium-pipe
- cp -rv ${srcdir}/fakeinstall/usr/lib/lib*OpenCL* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/gallium-pipe/pipe_{r600,radeonsi}.so ${pkgdir}/usr/lib/gallium-pipe/
+ _install fakeinstall/etc/OpenCL
+ _install fakeinstall/usr/lib/lib*OpenCL*
+ _install fakeinstall/usr/lib/gallium-pipe
- install -m755 -d "${pkgdir}/usr/share/licenses/opencl-mesa"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/opencl-mesa/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
package_vulkan-intel() {
pkgdesc="Intel's Vulkan mesa driver"
- depends=('wayland' 'libx11' 'libxshmfence')
+ depends=('wayland' 'libx11' 'libxshmfence' 'libdrm')
provides=('vulkan-driver')
- install -m755 -d ${pkgdir}/usr/share/vulkan/icd.d
- mv -v ${srcdir}/fakeinstall/usr/share/vulkan/icd.d/intel_icd*.json ${pkgdir}/usr/share/vulkan/icd.d/
+ _install fakeinstall/usr/share/vulkan/icd.d/intel_icd*.json
+ _install fakeinstall/usr/lib/libvulkan_intel.so
+ _install fakeinstall/usr/include/vulkan/vulkan_intel.h
- install -m755 -d ${pkgdir}/usr/{include/vulkan,lib}
- mv -v ${srcdir}/fakeinstall/usr/lib/libvulkan_intel.so ${pkgdir}/usr/lib/
- mv -v ${srcdir}/fakeinstall/usr/include/vulkan/vulkan_intel.h ${pkgdir}/usr/include/vulkan
-
- install -m755 -d "${pkgdir}/usr/share/licenses/vulkan-intel"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/vulkan-intel/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
package_vulkan-radeon() {
@@ -112,40 +117,31 @@ package_vulkan-radeon() {
depends=('wayland' 'libx11' 'libxshmfence' 'libelf' 'libdrm' 'llvm-libs')
provides=('vulkan-driver')
- install -m755 -d ${pkgdir}/usr/share/vulkan/icd.d
- mv -v ${srcdir}/fakeinstall/usr/share/vulkan/icd.d/radeon_icd*.json ${pkgdir}/usr/share/vulkan/icd.d/
-
- install -m755 -d ${pkgdir}/usr/lib
- mv -v ${srcdir}/fakeinstall/usr/lib/libvulkan_radeon.so ${pkgdir}/usr/lib/
+ _install fakeinstall/usr/share/vulkan/icd.d/radeon_icd*.json
+ _install fakeinstall/usr/lib/libvulkan_radeon.so
- install -m755 -d "${pkgdir}/usr/share/licenses/vulkan-radeon"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/vulkan-radeon/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
package_libva-mesa-driver() {
pkgdesc="VA-API implementation for gallium"
- depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence' 'lm_sensors' 'libunwind')
+ depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence')
- install -m755 -d ${pkgdir}/usr/lib/dri
- cp -av ${srcdir}/fakeinstall/usr/lib/dri/*_drv_video.so ${pkgdir}/usr/lib/dri
+ _install fakeinstall/usr/lib/dri/*_drv_video.so
- install -m755 -d "${pkgdir}/usr/share/licenses/libva-mesa-driver"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libva-mesa-driver/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
package_mesa-vdpau() {
pkgdesc="Mesa VDPAU drivers"
- depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence' 'lm_sensors' 'libunwind')
+ depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence')
- install -m755 -d ${pkgdir}/usr/lib/vdpau
- cp -av ${srcdir}/fakeinstall/usr/lib/vdpau/* ${pkgdir}/usr/lib/vdpau
+ _install fakeinstall/usr/lib/vdpau
- install -m755 -d "${pkgdir}/usr/share/licenses/mesa-vdpau"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa-vdpau/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
package_mesa() {
- pkgdesc="an open-source implementation of the OpenGL specification"
depends=('libdrm' 'wayland' 'libxxf86vm' 'libxdamage' 'libxshmfence' 'libelf'
'libomxil-bellagio' 'libunwind' 'llvm-libs' 'lm_sensors' 'libglvnd')
optdepends=('opengl-man-pages: for the OpenGL API man pages'
@@ -154,38 +150,38 @@ package_mesa() {
provides=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl' 'opengl-driver')
conflicts=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl')
replaces=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl')
- backup=('etc/drirc')
- install -m755 -d ${pkgdir}/etc
- cp -rv ${srcdir}/fakeinstall/etc/drirc ${pkgdir}/etc
-
- install -m755 -d ${pkgdir}/usr/share/glvnd/egl_vendor.d
- cp -rv ${srcdir}/fakeinstall/usr/share/glvnd/egl_vendor.d/50_mesa.json ${pkgdir}/usr/share/glvnd/egl_vendor.d/
+ _install fakeinstall/usr/share/drirc.d/00-mesa-defaults.conf
+ _install fakeinstall/usr/share/glvnd/egl_vendor.d/50_mesa.json
- install -m755 -d ${pkgdir}/usr/lib/dri
# ati-dri, nouveau-dri, intel-dri, svga-dri, swrast
- cp -av ${srcdir}/fakeinstall/usr/lib/dri/*_dri.so ${pkgdir}/usr/lib/dri
+ _install fakeinstall/usr/lib/dri/*_dri.so
- cp -rv ${srcdir}/fakeinstall/usr/lib/bellagio ${pkgdir}/usr/lib
- cp -rv ${srcdir}/fakeinstall/usr/lib/d3d ${pkgdir}/usr/lib
- cp -rv ${srcdir}/fakeinstall/usr/lib/lib{gbm,glapi}.so* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/libOSMesa.so* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/libwayland*.so* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/libxatracker.so* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/libswrAVX*.so* ${pkgdir}/usr/lib/
-
- cp -rv ${srcdir}/fakeinstall/usr/include ${pkgdir}/usr
- cp -rv ${srcdir}/fakeinstall/usr/lib/pkgconfig ${pkgdir}/usr/lib/
+ _install fakeinstall/usr/lib/bellagio
+ _install fakeinstall/usr/lib/d3d
+ _install fakeinstall/usr/lib/lib{gbm,glapi}.so*
+ _install fakeinstall/usr/lib/libOSMesa.so*
+ _install fakeinstall/usr/lib/libxatracker.so*
+ # _install fakeinstall/usr/lib/libswrAVX*.so*
+
+ # in libglvnd
+ rm -v fakeinstall/usr/lib/libGLESv{1_CM,2}.so*
- # remove vulkan headers
- rm -rf ${pkgdir}/usr/include/vulkan
+ # in vulkan-headers
+ rm -rv fakeinstall/usr/include/vulkan
+
+ _install fakeinstall/usr/include
+ _install fakeinstall/usr/lib/pkgconfig
# libglvnd support
- cp -rv ${srcdir}/fakeinstall/usr/lib/libGLX_mesa.so* ${pkgdir}/usr/lib/
- cp -rv ${srcdir}/fakeinstall/usr/lib/libEGL_mesa.so* ${pkgdir}/usr/lib/
+ _install fakeinstall/usr/lib/libGLX_mesa.so*
+ _install fakeinstall/usr/lib/libEGL_mesa.so*
+
# indirect rendering
- ln -s /usr/lib/libGLX_mesa.so.0 ${pkgdir}/usr/lib/libGLX_indirect.so.0
+ ln -s /usr/lib/libGLX_mesa.so.0 "${pkgdir}/usr/lib/libGLX_indirect.so.0"
+
+ # make sure there are no files left to install
+ find fakeinstall -depth -print0 | xargs -0 rmdir
- install -m755 -d "${pkgdir}/usr/share/licenses/mesa"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa/"
+ install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE
}
diff --git a/abs/core/mesa/get-program-name-based-on-path.patch b/abs/core/mesa/get-program-name-based-on-path.patch
new file mode 100644
index 0000000..66e97f5
--- /dev/null
+++ b/abs/core/mesa/get-program-name-based-on-path.patch
@@ -0,0 +1,58 @@
+From 759b94038987bb983398cd4b1d2cb1c8f79817a9 Mon Sep 17 00:00:00 2001
+From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Date: Tue, 23 Oct 2018 11:38:48 -0400
+Subject: [PATCH] util: Get program name based on path when possible
+
+Some programs start with the path and command line arguments in
+argv[0] (program_invocation_name). Chromium is an example of
+an application using mesa that does this.
+
+This tries to query the real path for the symbolic link /proc/self/exe
+to find the program name instead. It only uses the realpath if it
+was a prefix of the invocation to avoid breaking wine programs.
+
+Cc: Timothy Arceri <tarceri@itsqueeze.com>
+Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
+---
+ src/util/u_process.c | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/src/util/u_process.c b/src/util/u_process.c
+index 5e5927678d8..a1667e78074 100644
+--- a/src/util/u_process.c
++++ b/src/util/u_process.c
+@@ -41,8 +41,29 @@ static const char *
+ __getProgramName()
+ {
+ char * arg = strrchr(program_invocation_name, '/');
+- if (arg)
++ if (arg) {
++ /* If the / character was found this is likely a linux path or
++ * an invocation path for a 64-bit wine program.
++ *
++ * However, some programs pass command line arguments into argv[0].
++ * Strip these arguments out by using the realpath only if it was
++ * a prefix of the invocation name.
++ */
++ static char *path;
++
++ if (!path)
++ path = realpath("/proc/self/exe", NULL);
++
++ if (path && strncmp(path, program_invocation_name, strlen(path)) == 0) {
++ /* This shouldn't be null because path is a a prefix,
++ * but check it anyway since path is static. */
++ char * name = strrchr(path, '/');
++ if (name)
++ return name + 1;
++ }
++
+ return arg+1;
++ }
+
+ /* If there was no '/' at all we likely have a windows like path from
+ * a wine application.
+--
+2.18.1
+
diff --git a/abs/core/mplayer/PKGBUILD b/abs/core/mplayer/PKGBUILD
index c59bebe..b8d0459 100644
--- a/abs/core/mplayer/PKGBUILD
+++ b/abs/core/mplayer/PKGBUILD
@@ -5,8 +5,8 @@
pkgbase=mplayer
pkgname=('mplayer' 'mencoder')
-pkgver=38017
-pkgrel=1
+pkgver=38101
+pkgrel=2
pkgdesc='Media player for Linux'
url='http://www.mplayerhq.hu/'
arch=('x86_64')
@@ -14,7 +14,7 @@ license=('GPL')
makedepends=('libxxf86dga' 'libmad' 'libxinerama' 'libmng' 'libxss' 'smbclient' 'aalib'
'libcaca' 'faac' 'faad2' 'lirc' 'libxvmc' 'enca' 'libdca' 'a52dec' 'libvpx' 'unzip'
'mesa' 'live-media' 'yasm' 'git' 'mpg123' 'ladspa' 'libcdio-paranoia' 'subversion'
- 'x264' 'libx264' 'rtmpdump' 'libdvdcss' 'libdvdread' 'libdvdnav' 'ffmpeg')
+ 'x264' 'rtmpdump' 'libdvdcss' 'libdvdread' 'libdvdnav' 'ffmpeg')
options=('!emptydirs')
source=(${pkgbase}-${pkgver}::"svn://svn.mplayerhq.hu/mplayer/trunk#revision=${pkgver}"
mplayer.desktop
@@ -68,7 +68,7 @@ package_mplayer() {
pkgdesc='Media player for Linux'
backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf')
depends=('desktop-file-utils' 'ttf-font' 'enca' 'libxss' 'a52dec' 'libvpx'
- 'lirc' 'libx264' 'libmng' 'libdca' 'aalib' 'libxinerama' 'smbclient'
+ 'lirc' 'x264' 'libmng' 'libdca' 'aalib' 'libxinerama' 'smbclient'
'libmad' 'libcaca' 'libxxf86dga' 'faac' 'faad2' 'libxvmc' 'mpg123'
'libcdio-paranoia' 'rtmpdump' 'libdvdnav' 'ffmpeg')
@@ -82,7 +82,7 @@ package_mplayer() {
package_mencoder() {
pkgdesc='Free command line video decoding, encoding and filtering tool'
- depends=('enca' 'a52dec' 'libvpx' 'libx264' 'libmng' 'libdca' 'smbclient' 'libmad'
+ depends=('enca' 'a52dec' 'libvpx' 'x264' 'libmng' 'libdca' 'smbclient' 'libmad'
'faac' 'faad2' 'mpg123' 'libcdio-paranoia' 'rtmpdump' 'libdvdnav' 'ffmpeg')
make -C ${pkgbase}-${pkgver} DESTDIR="${pkgdir}" install-mencoder install-mencoder-man
diff --git a/abs/core/mythdb-initial/PKGBUILD b/abs/core/mythdb-initial/PKGBUILD
index 6d014bc..29d49d2 100755
--- a/abs/core/mythdb-initial/PKGBUILD
+++ b/abs/core/mythdb-initial/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythdb-initial
-pkgver=8.5
-pkgrel=4
+pkgver=8.6
+pkgrel=1
pkgdesc="setup the initial mythtv database for linhes"
url=""
license=()
@@ -20,6 +20,6 @@ package() {
cp $srcdir/custom.sql $pkgdir/data/database/custom.sql
}
-md5sums=('fb6be5fd1f77fd4211e9727061e2dca5'
+md5sums=('67114acfb6661e5d5c57644fe8d7fe0c'
'ad0e57ac5e7c3677808a670e16634bba'
- '9246104782d867342c63510d3c77f573')
+ 'bce3cebbe4e6ec360745093e5a3fcde9')
diff --git a/abs/core/mythdb-initial/custom.sql b/abs/core/mythdb-initial/custom.sql
index a666a2f..913938e 100644
--- a/abs/core/mythdb-initial/custom.sql
+++ b/abs/core/mythdb-initial/custom.sql
@@ -182,9 +182,9 @@ INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
-- Defaults for OS install
INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
('HOSTuprootfstype','ext4' , 'apheleia'),
-('HOSTOSsize', '5' , 'apheleia'),
+('HOSTOSsize', '6' , 'apheleia'),
('HOSTrootfstype', 'ext4' , 'apheleia'),
-('HOSTHOMEsize', '5' , 'apheleia'),
+('HOSTHOMEsize', '6' , 'apheleia'),
('HOSTDatabasesize','3' , 'apheleia'),
('HostUseSWAP', '1' , 'apheleia'),
('HostUseALLdata', '1' , 'apheleia'),
diff --git a/abs/core/mythdb-initial/mc.sql b/abs/core/mythdb-initial/mc.sql
index c0343f0..f3ceb4e 100644
--- a/abs/core/mythdb-initial/mc.sql
+++ b/abs/core/mythdb-initial/mc.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 5.6.35, for Linux (x86_64)
+-- MySQL dump 10.13 Distrib 5.6.39, for Linux (x86_64)
--
-- Host: localhost Database: mythconverg
-- ------------------------------------------------------
--- Server version 5.6.35
+-- Server version 5.6.39
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -872,7 +872,7 @@ CREATE TABLE `housekeeping` (
LOCK TABLES `housekeeping` WRITE;
/*!40000 ALTER TABLE `housekeeping` DISABLE KEYS */;
-INSERT INTO `housekeeping` VALUES ('BackupDB',NULL,'2017-09-18 03:10:11',NULL);
+INSERT INTO `housekeeping` VALUES ('BackupDB',NULL,'2019-02-28 22:31:49',NULL);
/*!40000 ALTER TABLE `housekeeping` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1118,7 +1118,7 @@ CREATE TABLE `keybindings` (
LOCK TABLES `keybindings` WRITE;
/*!40000 ALTER TABLE `keybindings` DISABLE KEYS */;
-INSERT INTO `keybindings` VALUES ('Global','UP','Up Arrow','Up','apheleia'),('Global','DOWN','Down Arrow','Down','apheleia'),('Global','LEFT','Left Arrow','Left','apheleia'),('Global','RIGHT','Right Arrow','Right','apheleia'),('Global','NEXT','Move to next widget','Tab','apheleia'),('Global','PREVIOUS','Move to preview widget','Backtab','apheleia'),('Global','SELECT','Select','Return,Enter,Space','apheleia'),('Global','BACKSPACE','Backspace','Backspace','apheleia'),('Global','ESCAPE','Escape','Esc','apheleia'),('Global','MENU','Pop-up menu','M','apheleia'),('Global','INFO','More information','I','apheleia'),('Global','DELETE','Delete','D','apheleia'),('Global','EDIT','Edit','E','apheleia'),('Global','SCREENSHOT','Save screenshot','','apheleia'),('Global','HANDLEMEDIA','Play a media resource','','apheleia'),('Global','PAGEUP','Page Up','PgUp','apheleia'),('Global','PAGEDOWN','Page Down','PgDown','apheleia'),('Global','PAGETOP','Page to top of list','','apheleia'),('Global','PAGEMIDDLE','Page to middle of list','','apheleia'),('Global','PAGEBOTTOM','Page to bottom of list','','apheleia'),('Global','PREVVIEW','Previous View','Home','apheleia'),('Global','NEXTVIEW','Next View','End','apheleia'),('Global','HELP','Help','F1','apheleia'),('Global','EJECT','Eject Removable Media','','apheleia'),('Global','CUT','Cut text from textedit','Ctrl+X','apheleia'),('Global','COPY','Copy text from textedit','Ctrl+C','apheleia'),('Global','PASTE','Paste text into textedit','Ctrl+V','apheleia'),('Global','NEWLINE','Insert newline into textedit','Ctrl+Return','apheleia'),('Global','UNDO','Undo','Ctrl+Z','apheleia'),('Global','REDO','Redo','Ctrl+Y','apheleia'),('Global','SEARCH','Show incremental search dialog','Ctrl+S','apheleia'),('Global','0','0','0','apheleia'),('Global','1','1','1','apheleia'),('Global','2','2','2','apheleia'),('Global','3','3','3','apheleia'),('Global','4','4','4','apheleia'),('Global','5','5','5','apheleia'),('Global','6','6','6','apheleia'),('Global','7','7','7','apheleia'),('Global','8','8','8','apheleia'),('Global','9','9','9','apheleia'),('Global','TVPOWERON','Turn the display on','','apheleia'),('Global','TVPOWEROFF','Turn the display off','','apheleia'),('Global','SYSEVENT01','Trigger System Key Event #1','','apheleia'),('Global','SYSEVENT02','Trigger System Key Event #2','','apheleia'),('Global','SYSEVENT03','Trigger System Key Event #3','','apheleia'),('Global','SYSEVENT04','Trigger System Key Event #4','','apheleia'),('Global','SYSEVENT05','Trigger System Key Event #5','','apheleia'),('Global','SYSEVENT06','Trigger System Key Event #6','','apheleia'),('Global','SYSEVENT07','Trigger System Key Event #7','','apheleia'),('Global','SYSEVENT08','Trigger System Key Event #8','','apheleia'),('Global','SYSEVENT09','Trigger System Key Event #9','','apheleia'),('Global','SYSEVENT10','Trigger System Key Event #10','','apheleia'),('Browser','ZOOMIN','Zoom in on browser window','.,>','apheleia'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','apheleia'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','apheleia'),('Browser','MOUSEUP','Move mouse pointer up','2','apheleia'),('Browser','MOUSEDOWN','Move mouse pointer down','8','apheleia'),('Browser','MOUSELEFT','Move mouse pointer left','4','apheleia'),('Browser','MOUSERIGHT','Move mouse pointer right','6','apheleia'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','apheleia'),('Browser','PAGEDOWN','Scroll down half a page','9','apheleia'),('Browser','PAGEUP','Scroll up half a page','3','apheleia'),('Browser','PAGELEFT','Scroll left half a page','7','apheleia'),('Browser','PAGERIGHT','Scroll right half a page','1','apheleia'),('Browser','NEXTLINK','Move selection to next link','Z','apheleia'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','apheleia'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','apheleia'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','apheleia'),('Browser','HISTORYFORWARD','Go forward to previous page','F','apheleia'),('Main Menu','EXITPROMPT','Display System Exit Prompt','Esc','apheleia'),('Main Menu','EXIT','System Exit','','apheleia'),('Main Menu','STANDBYMODE','Enter Standby Mode','','apheleia');
+INSERT INTO `keybindings` VALUES ('Global','UP','Up Arrow','Up','apheleia'),('Global','DOWN','Down Arrow','Down','apheleia'),('Global','LEFT','Left Arrow','Left','apheleia'),('Global','RIGHT','Right Arrow','Right','apheleia'),('Global','NEXT','Move to next widget','Tab','apheleia'),('Global','PREVIOUS','Move to preview widget','Backtab','apheleia'),('Global','SELECT','Select','Return,Enter,Space','apheleia'),('Global','BACKSPACE','Backspace','Backspace','apheleia'),('Global','ESCAPE','Escape','Esc','apheleia'),('Global','MENU','Pop-up menu','M,Meta+Enter','apheleia'),('Global','INFO','More information','I','apheleia'),('Global','DELETE','Delete','D','apheleia'),('Global','EDIT','Edit','E','apheleia'),('Global','SCREENSHOT','Save screenshot','','apheleia'),('Global','HANDLEMEDIA','Play a media resource','','apheleia'),('Global','PAGEUP','Page Up','PgUp','apheleia'),('Global','PAGEDOWN','Page Down','PgDown','apheleia'),('Global','PAGETOP','Page to top of list','','apheleia'),('Global','PAGEMIDDLE','Page to middle of list','','apheleia'),('Global','PAGEBOTTOM','Page to bottom of list','','apheleia'),('Global','PREVVIEW','Previous View','Home','apheleia'),('Global','NEXTVIEW','Next View','End','apheleia'),('Global','HELP','Help','F1','apheleia'),('Global','EJECT','Eject Removable Media','','apheleia'),('Global','CUT','Cut text from textedit','Ctrl+X','apheleia'),('Global','COPY','Copy text from textedit','Ctrl+C','apheleia'),('Global','PASTE','Paste text into textedit','Ctrl+V','apheleia'),('Global','NEWLINE','Insert newline into textedit','Ctrl+Return','apheleia'),('Global','UNDO','Undo','Ctrl+Z','apheleia'),('Global','REDO','Redo','Ctrl+Y','apheleia'),('Global','SEARCH','Show incremental search dialog','Ctrl+S','apheleia'),('Global','0','0','0','apheleia'),('Global','1','1','1','apheleia'),('Global','2','2','2','apheleia'),('Global','3','3','3','apheleia'),('Global','4','4','4','apheleia'),('Global','5','5','5','apheleia'),('Global','6','6','6','apheleia'),('Global','7','7','7','apheleia'),('Global','8','8','8','apheleia'),('Global','9','9','9','apheleia'),('Global','TVPOWERON','Turn the display on','','apheleia'),('Global','TVPOWEROFF','Turn the display off','','apheleia'),('Global','SYSEVENT01','Trigger System Key Event #1','','apheleia'),('Global','SYSEVENT02','Trigger System Key Event #2','','apheleia'),('Global','SYSEVENT03','Trigger System Key Event #3','','apheleia'),('Global','SYSEVENT04','Trigger System Key Event #4','','apheleia'),('Global','SYSEVENT05','Trigger System Key Event #5','','apheleia'),('Global','SYSEVENT06','Trigger System Key Event #6','','apheleia'),('Global','SYSEVENT07','Trigger System Key Event #7','','apheleia'),('Global','SYSEVENT08','Trigger System Key Event #8','','apheleia'),('Global','SYSEVENT09','Trigger System Key Event #9','','apheleia'),('Global','SYSEVENT10','Trigger System Key Event #10','','apheleia'),('Browser','ZOOMIN','Zoom in on browser window','.,>','apheleia'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','apheleia'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','apheleia'),('Browser','MOUSEUP','Move mouse pointer up','2','apheleia'),('Browser','MOUSEDOWN','Move mouse pointer down','8','apheleia'),('Browser','MOUSELEFT','Move mouse pointer left','4','apheleia'),('Browser','MOUSERIGHT','Move mouse pointer right','6','apheleia'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','apheleia'),('Browser','PAGEDOWN','Scroll down half a page','9','apheleia'),('Browser','PAGEUP','Scroll up half a page','3','apheleia'),('Browser','PAGELEFT','Scroll left half a page','7','apheleia'),('Browser','PAGERIGHT','Scroll right half a page','1','apheleia'),('Browser','NEXTLINK','Move selection to next link','Z','apheleia'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','apheleia'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','apheleia'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','apheleia'),('Browser','HISTORYFORWARD','Go forward to previous page','F','apheleia'),('Main Menu','EXITPROMPT','Display System Exit Prompt','Esc','apheleia'),('Main Menu','EXIT','System Exit','','apheleia'),('Main Menu','STANDBYMODE','Enter Standby Mode','','apheleia'),('Long Press','LONGPRESS1','Up to 16 Keys that allow Long Press','','apheleia'),('Long Press','LONGPRESS2','Up to 16 Keys that allow Long Press','','apheleia'),('Long Press','LONGPRESS3','Up to 16 Keys that allow Long Press','','apheleia'),('Long Press','LONGPRESS4','Up to 16 Keys that allow Long Press','','apheleia');
/*!40000 ALTER TABLE `keybindings` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2205,7 +2205,7 @@ CREATE TABLE `settings` (
LOCK TABLES `settings` WRITE;
/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
-INSERT INTO `settings` VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1348',NULL),('Language','en_US',NULL),('Country','US',NULL),('FreqTable','us-bcast',NULL),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('TVFormat','NTSC',NULL),('VbiFormat','NTSC Closed Caption',NULL),('BackupDBLastRunStart','2017-09-18 03:10:10',NULL),('BackupDBLastRunEnd','2017-09-18 03:10:11',NULL),('HardwareProfileEnabled','0',NULL),('BackendServerIP','127.0.0.1','apheleia'),('BackendServerIP6','::1','apheleia'),('AllowLinkLocal','1','apheleia'),('BackendServerPort','6543','apheleia'),('BackendStatusPort','6544','apheleia'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('TruncateDeletesSlowly','0','apheleia'),('HDRingbufferSize','9400',NULL),('StorageScheduler','BalancedFreeSpace',NULL),('UPnP/WMPSource','0',NULL),('DisableAutomaticBackup','0',NULL),('DisableFirewireReset','0','apheleia'),('EITTransportTimeout','5',NULL),('EITCrawIdleStart','60',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('WOLbackendConnectRetry','5',NULL),('BackendStopCommand','killall mythbackend',NULL),('BackendStartCommand','mythbackend',NULL),('JobQueueMaxSimultaneousJobs','1','apheleia'),('JobQueueCheckFrequency','60','apheleia'),('JobQueueWindowStart','00:00','apheleia'),('JobQueueWindowEnd','23:59','apheleia'),('JobQueueCPU','0','apheleia'),('JobAllowMetadata','1','apheleia'),('JobAllowCommFlag','1','apheleia'),('JobAllowTranscode','1','apheleia'),('JobAllowUserJob1','0','apheleia'),('JobAllowUserJob2','0','apheleia'),('JobAllowUserJob3','0','apheleia'),('JobAllowUserJob4','0','apheleia'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJobDesc2','User Job #2',NULL),('UserJobDesc3','User Job #3',NULL),('UserJobDesc4','User Job #4',NULL),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillMaxHour','23',NULL),('MythFillGrabberSuggestsTime','1',NULL),('DateFormat','ddd MMM d yyyy','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('WebBrowserZoomLevel','1','apheleia'),('ImageStorageGroupName','Images',NULL),('ImageSortOrder','0',NULL),('ImageShowHiddenFiles','0',NULL),('ImageSlideShowTime','3500',NULL),('ImageTransitionType','1',NULL),('ImageTransitionTime','1000',NULL),('MasterServerName','apheleia',NULL),('BackendServerAddr','127.0.0.1','apheleia');
+INSERT INTO `settings` VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1350',NULL),('Language','en_US',NULL),('Country','US',NULL),('FreqTable','us-bcast',NULL),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('TVFormat','NTSC',NULL),('VbiFormat','NTSC Closed Caption',NULL),('BackupDBLastRunStart','2019-02-28 22:31:49',NULL),('BackupDBLastRunEnd','2019-02-28 22:31:49',NULL),('HardwareProfileEnabled','0',NULL),('BackendServerIP','127.0.0.1','apheleia'),('BackendServerIP6','::1','apheleia'),('AllowLinkLocal','1','apheleia'),('BackendServerPort','6543','apheleia'),('BackendStatusPort','6544','apheleia'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('TruncateDeletesSlowly','0','apheleia'),('HDRingbufferSize','9400',NULL),('StorageScheduler','BalancedFreeSpace',NULL),('UPnP/WMPSource','0',NULL),('DisableAutomaticBackup','0',NULL),('DisableFirewireReset','0','apheleia'),('EITTransportTimeout','5',NULL),('EITCrawIdleStart','60',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('WOLbackendConnectRetry','5',NULL),('BackendStopCommand','killall mythbackend',NULL),('BackendStartCommand','mythbackend',NULL),('JobQueueMaxSimultaneousJobs','1','apheleia'),('JobQueueCheckFrequency','60','apheleia'),('JobQueueWindowStart','00:00','apheleia'),('JobQueueWindowEnd','23:59','apheleia'),('JobQueueCPU','0','apheleia'),('JobAllowMetadata','1','apheleia'),('JobAllowCommFlag','1','apheleia'),('JobAllowTranscode','1','apheleia'),('JobAllowUserJob1','0','apheleia'),('JobAllowUserJob2','0','apheleia'),('JobAllowUserJob3','0','apheleia'),('JobAllowUserJob4','0','apheleia'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJobDesc2','User Job #2',NULL),('UserJobDesc3','User Job #3',NULL),('UserJobDesc4','User Job #4',NULL),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillMaxHour','23',NULL),('MythFillGrabberSuggestsTime','1',NULL),('DateFormat','ddd MMM d yyyy','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('WebBrowserZoomLevel','1','apheleia'),('ImageStorageGroupName','Images',NULL),('ImageSortOrder','0',NULL),('ImageShowHiddenFiles','0',NULL),('ImageSlideShowTime','3500',NULL),('ImageTransitionType','1',NULL),('ImageTransitionTime','1000',NULL),('MasterServerName','apheleia',NULL),('BackendServerAddr','127.0.0.1','apheleia'),('DateFormat','ddd MMM d yyyy','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('WebBrowserZoomLevel','1','apheleia');
/*!40000 ALTER TABLE `settings` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2786,4 +2786,5 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2017-09-17 22:11:31
+-- Dump completed on 2019-02-28 16:32:31
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.cpp
new file mode 100644
index 0000000..f530872
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.cpp
@@ -0,0 +1,162 @@
+// -*- Mode: c++ -*-
+
+
+#include "mythconfigdialogs.h"
+
+#include "mythwizard.h"
+#include "mythuihelper.h"
+
+// C++ headers
+#include <vector>
+using std::vector;
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+
+static void clear_widgets(vector<Configurable*> &children,
+ vector<QWidget*> &childwidget)
+{
+ for (uint i = 0; (i < childwidget.size()) && (i < children.size()); i++)
+ {
+ if (children[i] && childwidget[i])
+ children[i]->widgetInvalid(childwidget[i]);
+ }
+ childwidget.clear();
+}
+
+void ConfigurationDialogWidget::keyPressEvent(QKeyEvent* e)
+{
+ bool handled = false;
+ QStringList actions;
+
+ handled = GetMythMainWindow()->TranslateKeyPress("qt", e, actions);
+
+ for (int i = 0; i < actions.size() && !handled; i++)
+ {
+ const QString &action = actions[i];
+ handled = true;
+
+ if (action == "SELECT")
+ accept();
+ else if (action == "ESCAPE")
+ reject();
+ else if (action == "EDIT")
+ emit editButtonPressed();
+ else if (action == "DELETE")
+ emit deleteButtonPressed();
+ else
+ handled = false;
+ }
+
+ if (!handled)
+ MythDialog::keyPressEvent(e);
+}
+
+ConfigurationDialog::~ConfigurationDialog()
+{
+ clear_widgets(cfgChildren, childwidget);
+ cfgGrp->deleteLater();
+}
+
+MythDialog* ConfigurationDialog::dialogWidget(MythMainWindow *parent,
+ const char *widgetName)
+{
+ dialog = new ConfigurationDialogWidget(parent, widgetName);
+
+ float wmult = 0, hmult = 0;
+
+ GetMythUI()->GetScreenSettings(wmult, hmult);
+
+ QVBoxLayout *layout = new QVBoxLayout(dialog);
+ layout->setSpacing((int)(20 * hmult));
+
+ ChildList::iterator it = cfgChildren.begin();
+ childwidget.clear();
+ childwidget.resize(cfgChildren.size());
+ for (uint i = 0; it != cfgChildren.end(); ++it, ++i)
+ {
+ if ((*it)->isVisible())
+ {
+ childwidget[i] = (*it)->configWidget(cfgGrp, dialog);
+ layout->addWidget(childwidget[i]);
+ }
+ }
+
+ return dialog;
+}
+
+DialogCode ConfigurationDialog::exec(bool saveOnAccept, bool doLoad)
+{
+ if (doLoad)
+ Load();
+
+ MythDialog *dialog = dialogWidget(
+ GetMythMainWindow(), "Configuration Dialog");
+
+ dialog->Show();
+
+ DialogCode ret = dialog->exec();
+
+ if ((QDialog::Accepted == ret) && saveOnAccept)
+ Save();
+
+ clear_widgets(cfgChildren, childwidget);
+
+ dialog->deleteLater();
+ dialog = NULL;
+
+ return ret;
+}
+
+void ConfigurationDialog::addChild(Configurable *child)
+{
+ cfgChildren.push_back(child);
+ cfgGrp->addChild(child);
+}
+
+void ConfigurationDialog::setLabel(const QString &label)
+{
+ if (label.isEmpty())
+ {
+ cfgGrp->setUseLabel(false);
+ cfgGrp->setLabel("");
+ }
+ else
+ {
+ cfgGrp->setLabel(label);
+ cfgGrp->setUseLabel(true);
+ cfgGrp->setUseFrame(true);
+ }
+}
+
+MythDialog *ConfigurationWizard::dialogWidget(MythMainWindow *parent,
+ const char *widgetName)
+{
+ MythWizard *wizard = new MythWizard(parent, widgetName);
+ dialog = wizard;
+
+ QObject::connect(cfgGrp, SIGNAL(changeHelpText(QString)),
+ wizard, SLOT( setHelpText( QString)));
+
+ QWidget *widget = parent;
+#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
+ if (qApp->platformName().contains("egl"))
+ widget = wizard;
+#endif
+ QWidget *child = NULL;
+ ChildList::iterator it = cfgChildren.begin();
+ for (; it != cfgChildren.end(); ++it)
+ {
+ if (!(*it)->isVisible())
+ continue;
+
+ child = (*it)->configWidget(cfgGrp, widget);
+ wizard->addPage(child, (*it)->getLabel());
+ }
+
+ if (child)
+ wizard->setFinishEnabled(child, true);
+
+ return wizard;
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.h b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.h
new file mode 100644
index 0000000..4d9969c
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfigdialogs.h
@@ -0,0 +1,83 @@
+// -*- Mode: c++ -*-
+
+#ifndef MYTH_CONFIG_DIALOGS_H
+#define MYTH_CONFIG_DIALOGS_H
+
+// Qt headers
+#include <QObject>
+#include <QString>
+
+// MythTV headers
+#include "mythexp.h"
+#include "mythdialogs.h"
+#include "mythstorage.h"
+#include "mythconfiggroups.h"
+
+class MPUBLIC ConfigurationDialogWidget : public MythDialog
+{
+ Q_OBJECT
+
+ public:
+ ConfigurationDialogWidget(MythMainWindow *parent,
+ const char *widgetName) :
+ MythDialog(parent, widgetName) { }
+
+ virtual void keyPressEvent(QKeyEvent *e);
+
+ signals:
+ void editButtonPressed(void);
+ void deleteButtonPressed(void);
+};
+
+/** \class ConfigurationDialog
+ * \brief A ConfigurationDialog that uses a ConfigurationGroup
+ * all children on one page in a vertical layout.
+ */
+class MPUBLIC ConfigurationDialog : public Storage
+{
+ public:
+ ConfigurationDialog() : dialog(NULL), cfgGrp(new ConfigurationGroup()) { }
+ virtual ~ConfigurationDialog();
+
+ // Make a modal dialog containing configWidget
+ virtual MythDialog *dialogWidget(MythMainWindow *parent,
+ const char *widgetName);
+
+ // Show a dialogWidget, and save if accepted
+ virtual DialogCode exec(bool saveOnExec = true, bool doLoad = true);
+
+ virtual void addChild(Configurable *child);
+
+ virtual Setting *byName(const QString &settingName)
+ { return cfgGrp->byName(settingName); }
+
+ void setLabel(const QString &label);
+
+ // Storage
+ virtual void Load(void) { cfgGrp->Load(); }
+ virtual void Save(void) { cfgGrp->Save(); }
+ virtual void Save(QString destination) { cfgGrp->Save(destination); }
+
+ protected:
+ typedef std::vector<Configurable*> ChildList;
+
+ ChildList cfgChildren;
+ std::vector<QWidget*> childwidget;
+ MythDialog *dialog;
+ ConfigurationGroup *cfgGrp;
+};
+
+/** \class ConfigurationWizard
+ * \brief A ConfigurationDialog that uses a ConfigurationGroup
+ * with one child per page.
+ */
+class MPUBLIC ConfigurationWizard : public ConfigurationDialog
+{
+ public:
+ ConfigurationWizard() : ConfigurationDialog() {}
+
+ virtual MythDialog *dialogWidget(MythMainWindow *parent,
+ const char *widgetName);
+};
+
+#endif // MYTH_CONFIG_DIALOGS_H
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.cpp
new file mode 100644
index 0000000..08cf134
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.cpp
@@ -0,0 +1,701 @@
+#include <algorithm>
+
+using namespace std;
+
+#include <QStackedWidget>
+
+#include "mythconfiggroups.h"
+#include "mythcontext.h"
+#include "mythlogging.h"
+#include "mythuihelper.h"
+
+static void clear_widgets(vector<Configurable*> &children,
+ vector<QWidget*> &childwidget)
+{
+ for (uint i = 0; (i < childwidget.size()) && (i < children.size()); i++)
+ {
+ if (children[i] && childwidget[i])
+ children[i]->widgetInvalid(childwidget[i]);
+ }
+ childwidget.clear();
+}
+
+ConfigurationGroup::ConfigurationGroup(bool luselabel, bool luseframe,
+ bool lzeroMargin, bool lzeroSpace) :
+ Setting(this),
+ uselabel(luselabel), useframe(luseframe),
+ zeroMargin(lzeroMargin), zeroSpace(lzeroSpace)
+{
+ // Pre-calculate the margin and spacing that all sub-classes will use:
+
+ if (lzeroMargin)
+ margin = 2;
+ else
+ {
+ float wmult = 0, hmult = 0;
+
+ GetMythUI()->GetScreenSettings(wmult, hmult);
+
+ if (luselabel)
+ margin = (int)(28 * hmult * 0.5);
+ else
+ margin = (int)(10 * hmult * 0.5);
+ }
+
+ space = (lzeroSpace) ? 2 : -1;
+}
+
+ConfigurationGroup::~ConfigurationGroup()
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ {
+ if (*it)
+ {
+ (*it)->disconnect();
+ (*it)->deleteLater();
+ }
+ }
+ children.clear();
+}
+
+void ConfigurationGroup::deleteLater(void)
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ {
+ if (*it)
+ (*it)->disconnect();
+ }
+ Setting::deleteLater();
+}
+
+Setting *ConfigurationGroup::byName(const QString &name)
+{
+ Setting *tmp = NULL;
+
+ childList::iterator it = children.begin();
+ for (; !tmp && (it != children.end()); ++it)
+ {
+ if (*it)
+ tmp = (*it)->byName(name);
+ }
+
+ return tmp;
+}
+
+void ConfigurationGroup::Load(void)
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ if (*it && (*it)->GetStorage())
+ (*it)->GetStorage()->Load();
+}
+
+void ConfigurationGroup::Save(void)
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ if (*it && (*it)->GetStorage())
+ (*it)->GetStorage()->Save();
+}
+
+void ConfigurationGroup::Save(QString destination)
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ if (*it && (*it)->GetStorage())
+ (*it)->GetStorage()->Save(destination);
+}
+
+void ConfigurationGroup::SetSaveRequired(void)
+{
+ childList::iterator it = children.begin();
+ for (; it != children.end() ; ++it)
+ if (*it && (*it)->GetStorage())
+ (*it)->GetStorage()->SetSaveRequired();
+}
+
+QWidget *VerticalConfigurationGroup::configWidget(
+ ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName)
+{
+ if (layout)
+ layout->deleteLater();
+ layout = new QVBoxLayout();
+ layout->setMargin(margin);
+ layout->setSpacing((space<0) ? margin : space);
+
+ childwidget.resize(children.size());
+ for (uint i = 0; i < children.size(); i++)
+ {
+ if (children[i] && children[i]->isVisible())
+ {
+ childwidget[i] = children[i]->configWidget(cg, NULL, NULL);
+ layout->addWidget(childwidget[i]);
+ children[i]->setEnabled(children[i]->isEnabled());
+ }
+ }
+
+ if (cg)
+ {
+ connect(this, SIGNAL(changeHelpText(QString)),
+ cg, SIGNAL(changeHelpText(QString)));
+ confgrp = cg;
+ }
+
+ if (uselabel)
+ {
+ MythGroupBox *groupbox = new MythGroupBox(parent);
+ groupbox->setObjectName(QString("VCG(%1)_groupbox").arg(widgetName));
+ groupbox->setTitle(getLabel());
+ widget = groupbox;
+ }
+ else if (useframe)
+ {
+ QFrame *frame = new QFrame(parent);
+ frame->setFrameStyle(QFrame::Box);
+ frame->setObjectName(QString("VCG(%1)_frame").arg(widgetName));
+ widget = frame;
+ }
+ else
+ {
+ widget = new QWidget(parent);
+ widget->setObjectName(QString("VCG(%1)_widget").arg(widgetName));
+ }
+
+ widget->setLayout(layout);
+ connect(widget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+ return widget;
+}
+
+void VerticalConfigurationGroup::widgetInvalid(QObject *obj)
+{
+ widget = (widget == obj) ? NULL : widget;
+}
+
+void VerticalConfigurationGroup::deleteLater(void)
+{
+ clear_widgets(children, childwidget);
+ ConfigurationGroup::deleteLater();
+}
+
+bool VerticalConfigurationGroup::replaceChild(
+ Configurable *old_child, Configurable *new_child)
+{
+ childList::iterator it = children.begin();
+ for (uint i = 0; it != children.end(); ++it, ++i)
+ {
+ if (*it != old_child)
+ continue;
+
+ *it = new_child;
+
+ if (!widget)
+ {
+ old_child->deleteLater();
+ return true;
+ }
+
+ if (childwidget[i])
+ {
+ old_child->widgetInvalid(childwidget[i]);
+ layout->removeWidget(childwidget[i]);
+ childwidget[i]->deleteLater();
+ childwidget[i] = NULL;
+ }
+
+ bool was_visible = old_child->isVisible();
+ bool was_enabled = old_child->isEnabled();
+
+ old_child->deleteLater();
+
+ if (was_visible)
+ {
+ childwidget[i] = new_child->configWidget(confgrp, widget, NULL);
+ layout->addWidget(childwidget[i]);
+ new_child->setEnabled(was_enabled);
+ childwidget[i]->resize(1,1);
+ childwidget[i]->show();
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+void VerticalConfigurationGroup::repaint(void)
+{
+ if (widget)
+ widget->repaint();
+}
+
+QWidget *HorizontalConfigurationGroup::configWidget(
+ ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName)
+{
+ QHBoxLayout *layout = new QHBoxLayout();
+ layout->setMargin(margin);
+ layout->setSpacing((space<0) ? margin : space);
+
+ for (uint i = 0 ; i < children.size() ; ++i)
+ {
+ if (children[i] && children[i]->isVisible())
+ {
+ QWidget *child = children[i]->configWidget(cg, NULL, NULL);
+ layout->addWidget(child);
+ children[i]->setEnabled(children[i]->isEnabled());
+ }
+ }
+
+ if (cg)
+ {
+ connect(this, SIGNAL(changeHelpText(QString)),
+ cg, SIGNAL(changeHelpText(QString)));
+ }
+
+ QWidget *widget = NULL;
+ if (uselabel)
+ {
+ MythGroupBox *groupbox = new MythGroupBox(parent);
+ groupbox->setObjectName(QString("HCG(%1)_groupbox").arg(widgetName));
+ groupbox->setTitle(getLabel());
+ widget = groupbox;
+ }
+ else if (useframe)
+ {
+ QFrame *frame = new QFrame(parent);
+ frame->setFrameStyle(QFrame::Box);
+ frame->setObjectName(QString("HCG(%1)_frame").arg(widgetName));
+ widget = frame;
+ }
+ else
+ {
+ widget = new QWidget(parent);
+ widget->setObjectName(QString("HCG(%1)_widget").arg(widgetName));
+ }
+
+ widget->setLayout(layout);
+ return widget;
+}
+
+QWidget* GridConfigurationGroup::configWidget(
+ ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName)
+{
+ QGridLayout *layout = new QGridLayout();
+ layout->setMargin(margin);
+ layout->setSpacing(space < 0 ? margin : space);
+
+ for (uint i = 0; i < children.size(); i++)
+ {
+ if (children[i] && children[i]->isVisible())
+ {
+ QWidget *child = children[i]->configWidget(cg, NULL, NULL);
+ layout->addWidget(child, i / columns, i % columns);
+ children[i]->setEnabled(children[i]->isEnabled());
+ }
+ }
+
+ if (cg)
+ {
+ connect(this, SIGNAL(changeHelpText(QString)),
+ cg, SIGNAL(changeHelpText(QString)));
+ }
+
+ QWidget *widget = NULL;
+ if (uselabel)
+ {
+ MythGroupBox *groupbox = new MythGroupBox(parent);
+ groupbox->setObjectName(QString("GCG(%1)_groupbox").arg(widgetName));
+ groupbox->setTitle(getLabel());
+ widget = groupbox;
+ }
+ else if (useframe)
+ {
+ QFrame *frame = new QFrame(parent);
+ frame->setFrameStyle(QFrame::Box);
+ frame->setObjectName(QString("GCG(%1)_frame").arg(widgetName));
+ widget = frame;
+ }
+ else
+ {
+ widget = new QWidget(parent);
+ widget->setObjectName(QString("GCG(%1)_widget").arg(widgetName));
+ }
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+StackedConfigurationGroup::~StackedConfigurationGroup()
+{
+ clear_widgets(children, childwidget);
+ ConfigurationGroup::deleteLater();
+}
+
+void StackedConfigurationGroup::deleteLater(void)
+{
+ clear_widgets(children, childwidget);
+ ConfigurationGroup::deleteLater();
+}
+
+QWidget* StackedConfigurationGroup::configWidget(ConfigurationGroup *cg,
+ QWidget* parent,
+ const char* widgetName)
+{
+ widget = new QStackedWidget(parent);
+ widget->setObjectName(widgetName);
+
+ connect(widget, SIGNAL(destroyed(QObject*)),
+ this, SLOT( widgetDeleted(QObject*)));
+
+ for (uint i = 0 ; i < children.size() ; ++i)
+ {
+ if (!children[i]->isVisible())
+ continue;
+
+ childwidget[i] = children[i]->configWidget(cg, widget, NULL);
+ if (!childwidget[i])
+ continue;
+
+ connect(childwidget[i], SIGNAL(destroyed( QObject*)),
+ this, SLOT( widgetInvalid(QObject*)));
+ widget->addWidget(childwidget[i]);
+ children[i]->setEnabled(children[i]->isEnabled());
+ }
+
+ if (childwidget[top])
+ widget->setCurrentWidget(childwidget[top]);
+
+ if (cg)
+ {
+ connect(this, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+ }
+ confgrp = cg;
+
+ return widget;
+}
+
+void StackedConfigurationGroup::widgetInvalid(QObject *obj)
+{
+ widget = (widget == obj) ? NULL : widget;
+ for (uint i = 0; i < childwidget.size(); i++)
+ {
+ if ((QObject*)childwidget[i] == obj)
+ childwidget[i] = NULL;
+ }
+}
+
+void StackedConfigurationGroup::addChild(Configurable *child)
+{
+ ConfigurationGroup::addChild(child);
+ childwidget.resize(childwidget.size() + 1);
+ if (!widget)
+ return;
+
+ uint i = children.size() - 1;
+ if ((i < children.size()) && children[i]->isVisible())
+ {
+ childwidget[i] = children[i]->configWidget(confgrp, widget, NULL);
+ widget->addWidget(childwidget[i]);
+ childwidget[i]->resize(1,1);
+ childwidget[i]->show();
+ }
+}
+
+void StackedConfigurationGroup::removeChild(Configurable *child)
+{
+ childList::iterator it = find(children.begin(), children.end(), child);
+ if (it == children.end())
+ return;
+
+ uint i = it - children.begin();
+ if ((i >= children.size()) || (i >= childwidget.size()))
+ return;
+
+ children.erase(it);
+
+ vector<QWidget*>::iterator cit = childwidget.begin() + i;
+ QWidget *cw = *cit;
+ childwidget.erase(cit);
+
+ if (widget && cw)
+ {
+ child->widgetInvalid(cw);
+ widget->removeWidget(cw);
+ }
+}
+
+void StackedConfigurationGroup::raise(Configurable* child)
+{
+ for (uint i = 0 ; i < children.size() ; i++)
+ {
+ if (children[i] == child)
+ {
+ top = i;
+ if (widget && childwidget[top])
+ widget->setCurrentWidget(childwidget[top]);
+ return;
+ }
+ }
+
+ LOG(VB_GENERAL, LOG_ALERT,
+ QString("BUG: StackedConfigurationGroup::raise(): "
+ "unrecognized child 0x%1 on setting %2/%3")
+ .arg((uint64_t)child,0,16).arg(getName()).arg(getLabel()));
+}
+
+void StackedConfigurationGroup::Save(void)
+{
+ if (saveAll)
+ ConfigurationGroup::Save();
+ else if (top < children.size())
+ children[top]->GetStorage()->Save();
+}
+
+void StackedConfigurationGroup::Save(QString destination)
+{
+ if (saveAll)
+ ConfigurationGroup::Save(destination);
+ else if (top < children.size())
+ children[top]->GetStorage()->Save(destination);
+}
+
+void TriggeredConfigurationGroup::addChild(Configurable* child)
+{
+ VerifyLayout();
+ configLayout->addChild(child);
+}
+
+void TriggeredConfigurationGroup::addTarget(QString triggerValue,
+ Configurable *target)
+{
+ VerifyLayout();
+ triggerMap[triggerValue] = target;
+
+ if (!configStack)
+ {
+ configStack = new StackedConfigurationGroup(
+ stackUseLabel, stackUseFrame, stackZeroMargin, stackZeroSpace);
+ configStack->setSaveAll(isSaveAll);
+ }
+
+ configStack->addChild(target);
+}
+
+Setting *TriggeredConfigurationGroup::byName(const QString &settingName)
+{
+ VerifyLayout();
+ Setting *setting = ConfigurationGroup::byName(settingName);
+
+ if (!setting)
+ setting = configLayout->byName(settingName);
+
+ if (!setting && !widget)
+ setting = configStack->byName(settingName);
+
+ return setting;
+}
+
+void TriggeredConfigurationGroup::Load(void)
+{
+ VerifyLayout();
+
+ configLayout->Load();
+
+ if (!widget && configStack)
+ configStack->Load();
+}
+
+void TriggeredConfigurationGroup::Save(void)
+{
+ VerifyLayout();
+
+ configLayout->Save();
+
+ if (!widget)
+ configStack->Save();
+}
+
+void TriggeredConfigurationGroup::Save(QString destination)
+{
+ VerifyLayout();
+
+ configLayout->Save(destination);
+
+ if (!widget)
+ configStack->Save(destination);
+}
+
+void TriggeredConfigurationGroup::repaint(void)
+{
+ VerifyLayout();
+
+ if (widget)
+ widget->repaint();
+}
+
+void TriggeredConfigurationGroup::setTrigger(Configurable *_trigger)
+{
+ if (trigger)
+ {
+ trigger->disconnect();
+ }
+
+ trigger = _trigger;
+
+ if (trigger)
+ {
+ connect(trigger, SIGNAL(valueChanged( const QString&)),
+ this, SLOT( triggerChanged(const QString&)));
+ }
+}
+
+void TriggeredConfigurationGroup::triggerChanged(const QString &value)
+{
+ if (!configStack)
+ return;
+
+ QMap<QString,Configurable*>::iterator it = triggerMap.find(value);
+
+ if (it == triggerMap.end())
+ {
+ LOG(VB_GENERAL, LOG_ALERT,
+ "TriggeredConfigurationGroup::" +
+ QString("triggerChanged(%1) Error:").arg(value) +
+ "Failed to locate value in triggerMap");
+ }
+ else
+ {
+ configStack->raise(*it);
+ }
+}
+
+/** \fn TriggeredConfigurationGroup::SetVertical(bool)
+ * \brief By default we use a vertical layout, but you can call this
+ * with a false value to use a horizontal layout instead.
+ *
+ * NOTE: This must be called before this addChild() is first called.
+ */
+void TriggeredConfigurationGroup::SetVertical(bool vert)
+{
+ if (configLayout)
+ {
+ LOG(VB_GENERAL, LOG_ALERT,
+ "TriggeredConfigurationGroup::setVertical(): "
+ "Sorry, this must be called before any children are added "
+ "to the group.");
+ return;
+ }
+
+ isVertical = vert;
+}
+
+void TriggeredConfigurationGroup::removeTarget(QString triggerValue)
+{
+ ComboBoxSetting *combobox = dynamic_cast<ComboBoxSetting*>(trigger);
+ if (!combobox)
+ {
+ LOG(VB_GENERAL, LOG_ALERT,
+ "TriggeredConfigurationGroup::removeTarget(): "
+ "Failed to cast trigger to ComboBoxSetting -- aborting");
+ return;
+ }
+
+ QMap<QString,Configurable*>::iterator cit = triggerMap.find(triggerValue);
+ if (cit == triggerMap.end())
+ {
+ LOG(VB_GENERAL, LOG_ALERT,
+ QString("TriggeredConfigurationGroup::removeTarget(): "
+ "Failed to find desired value(%1) -- aborting")
+ .arg(triggerValue));
+ return;
+ }
+
+ // remove trigger value from trigger combobox
+ bool ok = false;
+ for (uint i = 0; i < combobox->size(); i++)
+ {
+ if (combobox->GetValue(i) == triggerValue)
+ {
+ ok = combobox->removeSelection(
+ combobox->GetLabel(i), combobox->GetValue(i));
+ break;
+ }
+ }
+
+ if (!ok)
+ {
+ LOG(VB_GENERAL, LOG_ALERT,
+ QString("TriggeredConfigurationGroup::removeTarget(): "
+ "Failed to remove '%1' from combobox -- aborting")
+ .arg(triggerValue));
+ return;
+ }
+
+ // actually remove the pane
+ configStack->removeChild(*cit);
+ triggerMap.erase(cit);
+}
+
+void TriggeredConfigurationGroup::VerifyLayout(void)
+{
+ if (configLayout)
+ return;
+
+ if (isVertical)
+ {
+ configLayout = new VerticalConfigurationGroup(
+ uselabel, useframe, zeroMargin, zeroSpace);
+ }
+ else
+ {
+ configLayout = new HorizontalConfigurationGroup(
+ uselabel, useframe, zeroMargin, zeroSpace);
+ }
+
+ ConfigurationGroup::addChild(configLayout);
+}
+
+QWidget *TriggeredConfigurationGroup::configWidget(
+ ConfigurationGroup *cg, QWidget *parent, const char *widgetName)
+{
+ VerifyLayout();
+
+ configLayout->addChild(configStack);
+
+ widget = configLayout->configWidget(cg, parent, widgetName);
+ connect(widget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ return widget;
+}
+
+void TriggeredConfigurationGroup::widgetInvalid(QObject *obj)
+{
+ widget = (widget == obj) ? NULL : widget;
+}
+
+JumpPane::JumpPane(const QStringList &labels, const QStringList &helptext) :
+ VerticalConfigurationGroup(true, false, true, true)
+{
+ //setLabel(tr("Jump To Buttons"));
+ for (int i = 0; i < labels.size(); i++)
+ {
+ TransButtonSetting *button =
+ new TransButtonSetting(QString::number(i));
+ button->setLabel(labels[i]);
+ button->setHelpText(helptext[i]);
+ connect(button, SIGNAL(pressed(QString)),
+ this, SIGNAL(pressed(QString)));
+ addChild(button);
+ }
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.h b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.h
new file mode 100644
index 0000000..85a17f8
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythconfiggroups.h
@@ -0,0 +1,274 @@
+// -*- Mode: c++ -*-
+
+#ifndef MYTH_CONFIG_GROUPS_H
+#define MYTH_CONFIG_GROUPS_H
+
+#include <QVBoxLayout>
+
+// MythTV headers
+#include "mythexp.h"
+#include "mythstorage.h"
+
+// C++ headers
+#include <vector>
+
+#define MYTHCONFIG
+#include "settings.h"
+#undef MYTHCONFIG
+
+class QStackedWidget;
+class MythGroupBox;
+
+class MPUBLIC ConfigurationGroup : public Setting, public Storage
+{
+ Q_OBJECT
+
+ public:
+ ConfigurationGroup(bool luselabel = true, bool luseframe = true,
+ bool lzeroMargin = false, bool lzeroSpace = false);
+
+ virtual void deleteLater(void);
+
+ void addChild(Configurable *child)
+ {
+ children.push_back(child);
+ };
+
+ virtual Setting *byName(const QString &name);
+
+ void setUseLabel(bool useit) { uselabel = useit; }
+ void setUseFrame(bool useit) { useframe = useit; }
+
+ void setOptions(bool luselabel = true, bool luseframe = true,
+ bool lzeroMargin = false, bool lzeroSpace = false)
+ {
+ uselabel = luselabel; useframe = luseframe;
+ zeroMargin = lzeroMargin; zeroSpace = lzeroSpace;
+ }
+
+ // Storage
+ virtual void Load(void);
+ virtual void Save(void);
+ virtual void Save(QString destination);
+ virtual void SetSaveRequired(void);
+
+ signals:
+ void changeHelpText(QString);
+
+ protected:
+ virtual ~ConfigurationGroup();
+
+ protected:
+ typedef std::vector<Configurable*> childList;
+ childList children;
+ bool uselabel;
+ bool useframe;
+ bool zeroMargin;
+ bool zeroSpace;
+ int margin;
+ int space;
+};
+
+class MPUBLIC VerticalConfigurationGroup : public ConfigurationGroup
+{
+ public:
+ VerticalConfigurationGroup(
+ bool luselabel = true, bool luseframe = true,
+ bool lzeroMargin = false, bool lzeroSpace = false) :
+ ConfigurationGroup(luselabel, luseframe, lzeroMargin, lzeroSpace),
+ widget(NULL), confgrp(NULL), layout(NULL)
+ {
+ }
+
+ virtual void deleteLater(void);
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName);
+ virtual void widgetInvalid(QObject *obj);
+
+ bool replaceChild(Configurable *old_child, Configurable *new_child);
+ void repaint(void);
+
+ protected:
+ /// You need to call deleteLater to delete QObject
+ virtual ~VerticalConfigurationGroup() { }
+
+ private:
+ std::vector<QWidget*> childwidget;
+ QWidget *widget;
+ ConfigurationGroup *confgrp;
+ QVBoxLayout *layout;
+};
+
+class MPUBLIC HorizontalConfigurationGroup : public ConfigurationGroup
+{
+ public:
+ HorizontalConfigurationGroup(
+ bool luselabel = true, bool luseframe = true,
+ bool lzeroMargin = false, bool lzeroSpace = false) :
+ ConfigurationGroup(luselabel, luseframe, lzeroMargin, lzeroSpace)
+ {
+ }
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName);
+
+ protected:
+ /// You need to call deleteLater to delete QObject
+ virtual ~HorizontalConfigurationGroup() { }
+};
+
+class MPUBLIC GridConfigurationGroup : public ConfigurationGroup
+{
+ public:
+ GridConfigurationGroup(uint col,
+ bool uselabel = true, bool useframe = true,
+ bool zeroMargin = false, bool zeroSpace = false) :
+ ConfigurationGroup(uselabel, useframe, zeroMargin, zeroSpace),
+ columns(col)
+ {
+ }
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName);
+
+ protected:
+ /// You need to call deleteLater to delete QObject
+ virtual ~GridConfigurationGroup() { }
+
+ private:
+ uint columns;
+};
+
+class MPUBLIC StackedConfigurationGroup : public ConfigurationGroup
+{
+ Q_OBJECT
+
+ public:
+ StackedConfigurationGroup(
+ bool uselabel = true, bool useframe = true,
+ bool zeroMargin = false, bool zeroSpace = false) :
+ ConfigurationGroup(uselabel, useframe, zeroMargin, zeroSpace),
+ widget(NULL), confgrp(NULL), top(0), saveAll(true)
+ {
+ }
+
+ virtual void deleteLater(void);
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = 0);
+
+ void raise(Configurable *child);
+ virtual void Save(void);
+ virtual void Save(QString destination);
+
+ // save all children, or only the top?
+ void setSaveAll(bool b) { saveAll = b; };
+
+ void addChild(Configurable*);
+ void removeChild(Configurable*);
+
+ public slots:
+ virtual void widgetInvalid(QObject *obj);
+
+ protected:
+ /// You need to call deleteLater to delete QObject
+ virtual ~StackedConfigurationGroup();
+
+ protected:
+ std::vector<QWidget*> childwidget;
+ QStackedWidget *widget;
+ ConfigurationGroup *confgrp;
+ uint top;
+ bool saveAll;
+};
+
+class MPUBLIC TriggeredConfigurationGroup : public ConfigurationGroup
+{
+ Q_OBJECT
+
+ public:
+ TriggeredConfigurationGroup(
+ bool uselabel = true, bool useframe = true,
+ bool zeroMargin = false, bool zeroSpace = false,
+ bool stack_uselabel = true, bool stack_useframe = true,
+ bool stack_zeroMargin = false, bool stack_zeroSpace = false) :
+ ConfigurationGroup(uselabel, useframe, zeroMargin, zeroSpace),
+ stackUseLabel(stack_uselabel), stackUseFrame(stack_useframe),
+ stackZeroMargin(stack_zeroMargin), stackZeroSpace(stack_zeroSpace),
+ isVertical(true), isSaveAll(true),
+ configLayout(NULL), configStack(NULL),
+ trigger(NULL), widget(NULL)
+ {
+ }
+
+ // Commands
+
+ virtual void addChild(Configurable *child);
+
+ void addTarget(QString triggerValue, Configurable *target);
+ void removeTarget(QString triggerValue);
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName);
+ virtual void widgetInvalid(QObject *obj);
+
+ virtual Setting *byName(const QString &settingName);
+
+ virtual void Load(void);
+ virtual void Save(void);
+ virtual void Save(QString destination);
+
+ void repaint(void);
+
+ // Sets
+
+ void SetVertical(bool vert);
+
+ virtual void setSaveAll(bool b)
+ {
+ if (configStack)
+ configStack->setSaveAll(b);
+ isSaveAll = b;
+ }
+
+ void setTrigger(Configurable *_trigger);
+
+ protected slots:
+ virtual void triggerChanged(const QString &value);
+
+ protected:
+ /// You need to call deleteLater to delete QObject
+ virtual ~TriggeredConfigurationGroup() { }
+ void VerifyLayout(void);
+
+ protected:
+ bool stackUseLabel;
+ bool stackUseFrame;
+ bool stackZeroMargin;
+ bool stackZeroSpace;
+ bool isVertical;
+ bool isSaveAll;
+ ConfigurationGroup *configLayout;
+ StackedConfigurationGroup *configStack;
+ Configurable *trigger;
+ QMap<QString,Configurable*> triggerMap;
+ QWidget *widget;
+};
+
+class MPUBLIC JumpPane : public VerticalConfigurationGroup
+{
+ Q_OBJECT
+
+ public:
+ JumpPane(const QStringList &labels, const QStringList &helptext);
+
+ signals:
+ void pressed(QString);
+};
+
+#endif // MYTH_CONFIG_GROUPS_H
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro b/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
index 6405b52..099d0f0 100755
--- a/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
@@ -1,8 +1,8 @@
#This is the path to the mythtv src
PREFIX = /usr/include/mythtv
-LIBVERSION = 29
-VERSION = 29.0
+LIBVERSION = 30
+VERSION = 30.0
INCLUDEPATH += $$PREFIX
INCLUDEPATH += $$PREFIX/libmyth
@@ -41,7 +41,18 @@ QMAKE_CLEAN += $(TARGET)
//HEADERS += commandlineparser.h
//SOURCES += main.cpp commandlineparser.cpp
-HEADERS += installdialog.h commandlineparser.h installsettings.h settemplate.h installationtype.h xorgsettings.h password_manage.h misc_settings.h mv_common.h infrared.h compat-mv.h supplemental.h vnc.h fileshare.h questionnotice.h
-SOURCES += main.cpp commandlineparser.cpp installdialog.cpp installsettings.cpp settemplate.cpp installationtype.cpp xorgsettings.cpp password_manage.cpp misc_settings.cpp infrared.cpp compat-mv.cpp supplemental.cpp vnc.cpp fileshare.cpp questionnotice.cpp
+HEADERS += installdialog.h commandlineparser.h installsettings.h
+HEADERS += settemplate.h installationtype.h xorgsettings.h password_manage.h
+HEADERS += misc_settings.h mv_common.h infrared.h compat-mv.h supplemental.h
+HEADERS += vnc.h fileshare.h questionnotice.h
+HEADERS += mythconfigdialogs.h mythconfiggroups.h
+HEADERS += settings.h
+
+SOURCES += main.cpp commandlineparser.cpp installdialog.cpp installsettings.cpp
+SOURCES += settemplate.cpp installationtype.cpp xorgsettings.cpp
+SOURCES += password_manage.cpp misc_settings.cpp infrared.cpp compat-mv.cpp
+SOURCES += supplemental.cpp vnc.cpp fileshare.cpp questionnotice.cpp
+SOURCES += mythconfigdialogs.cpp mythconfiggroups.cpp
+SOURCES += settings.cpp
QT += sql xml network widgets
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/settings.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/settings.cpp
new file mode 100644
index 0000000..41c3cf8
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/settings.cpp
@@ -0,0 +1,1236 @@
+// C++ headers
+#include <algorithm>
+#include <cmath>
+using namespace std;
+
+// POSIX headers
+#include <unistd.h>
+
+// Qt widgets
+#include <QLineEdit>
+#include <QSlider>
+#include <QLCDNumber>
+#include <QButtonGroup>
+#include <QRadioButton>
+#include <QProgressBar>
+
+// Qt utils
+#include <QFile>
+#include <QDateTime>
+#include <QDir>
+
+// MythTV headers
+#define MYTHCONFIG
+#include "settings.h"
+#include "mythconfiggroups.h"
+#undef MYTHCONFIG
+
+#include "mythwidgets.h"
+#include "mythcontext.h"
+#include "mythdb.h"
+#include "mythlogging.h"
+//#include "DisplayRes.h"
+#include "mythuihelper.h"
+
+/** \class Configurable
+ * \brief Configurable is the root of all the database aware widgets.
+ *
+ * This is an abstract class and some methods must be implemented
+ * in children. byName(const &QString) is abstract. While
+ * configWidget(ConfigurationGroup *, QWidget*, const char*)
+ * has an implementation, all it does is print an error message
+ * and return a NULL pointer.
+ */
+
+QWidget* Configurable::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName)
+{
+ (void)cg;
+ (void)parent;
+ (void)widgetName;
+ LOG(VB_GENERAL, LOG_ALERT,
+ "BUG: Configurable is visible, but has no configWidget");
+ return NULL;
+}
+
+/** \brief This slot calls the virtual widgetInvalid(QObject*) method.
+ *
+ * This should not be needed, anyone calling configWidget() should
+ * also be calling widgetInvalid() directly before configWidget()
+ * is called again on the Configurable. If widgetInvalid() is not
+ * called directly before the Configurable's configWidget() is
+ * called the Configurable may not update properly on screen, but
+ * if this is connected to from the widget's destroyed(QObject*)
+ * signal this will prevent a segfault from occurring.
+ */
+void Configurable::widgetDeleted(QObject *obj)
+{
+ widgetInvalid(obj);
+}
+
+/** \fn Configurable::enableOnSet(const QString &val)
+ * \brief This slot allows you to enable this configurable when a
+ * binary configurable is set to true.
+ * \param val signal value, should be "0" to disable, other to disable.
+ */
+void Configurable::enableOnSet(const QString &val)
+{
+ setEnabled( val != "0" );
+}
+
+/** \fn Configurable::enableOnUnset(const QString &val)
+ * \brief This slot allows you to enable this configurable when a
+ * binary configurable is set to false.
+ * \param val signal value, should be "0" to enable, other to disable.
+ */
+void Configurable::enableOnUnset(const QString &val)
+{
+ setEnabled( val == "0" );
+}
+
+QString Setting::getValue(void) const
+{
+ return settingValue;
+}
+
+void Setting::setValue(const QString &newValue)
+{
+ settingValue = newValue;
+ emit valueChanged(settingValue);
+}
+
+int SelectSetting::findSelection(const QString &label, QString value) const
+{
+ value = (value.isEmpty()) ? label : value;
+
+ for (uint i = 0; i < values.size(); i++)
+ {
+ if ((values[i] == value) && (labels[i] == label))
+ return i;
+ }
+
+ return -1;
+}
+
+void SelectSetting::addSelection(const QString &label, QString value,
+ bool select)
+{
+ value = (value.isEmpty()) ? label : value;
+
+ int found = findSelection(label, value);
+ if (found < 0)
+ {
+ labels.push_back(label);
+ values.push_back(value);
+ emit selectionAdded( label, value);
+ }
+
+ if (select || !isSet)
+ setValue(value);
+}
+
+bool SelectSetting::removeSelection(const QString &label, QString value)
+{
+ value = (value.isEmpty()) ? label : value;
+
+ int found = findSelection(label, value);
+ if (found < 0)
+ return false;
+
+ bool wasSet = isSet;
+ isSet = false;
+
+ labels.erase(labels.begin() + found);
+ values.erase(values.begin() + found);
+
+ isSet = wasSet && labels.size();
+ if (isSet)
+ {
+ current = (current > (uint)found) ? current - 1 : current;
+ current = min(current, (uint) (labels.size() - 1));
+ }
+
+ emit selectionRemoved(label, value);
+
+ return true;
+}
+
+void SelectSetting::fillSelectionsFromDir(const QDir& dir, bool absPath)
+{
+ QFileInfoList il = dir.entryInfoList();
+
+ for (QFileInfoList::Iterator it = il.begin();
+ it != il.end();
+ ++it )
+ {
+ QFileInfo &fi = *it;
+
+ if (absPath)
+ addSelection( fi.absoluteFilePath() );
+ else
+ addSelection( fi.fileName() );
+ }
+}
+
+void SelectSetting::clearSelections(void) {
+ labels.clear();
+ values.clear();
+ isSet = false;
+ emit selectionsCleared();
+}
+
+void SelectSetting::setValue(const QString &newValue)
+{
+ int found = getValueIndex(newValue);
+ if (found < 0)
+ {
+ addSelection(newValue, newValue, true);
+ }
+ else
+ {
+ current = found;
+ isSet = true;
+ Setting::setValue(newValue);
+ }
+}
+
+void SelectSetting::setValue(int which)
+{
+ if ((which >= ((int) values.size())) || (which < 0))
+ {
+ LOG(VB_GENERAL, LOG_ERR,
+ QString("SelectSetting::setValue(): invalid index: %1 size: %2")
+ .arg(which).arg(values.size()));
+ }
+ else
+ {
+ current = which;
+ isSet = true;
+ Setting::setValue(values[current]);
+ }
+}
+
+QString SelectSetting::getSelectionLabel(void) const
+{
+ if (!isSet || (current >= values.size()))
+ return QString::null;
+
+ return labels[current];
+}
+
+/** \fn SelectSetting::getValueIndex(QString)
+ * \brief Returns index of value in SelectSetting, or -1 if not found.
+ */
+int SelectSetting::getValueIndex(QString value)
+{
+ int ret = 0;
+
+ selectionList::const_iterator it = values.begin();
+ for (; it != values.end(); ++it, ++ret)
+ {
+ if (*it == value)
+ return ret;
+ }
+
+ return -1;
+}
+
+bool SelectSetting::ReplaceLabel(const QString &new_label, const QString &value)
+{
+ int i = getValueIndex(value);
+
+ if (i >= 0)
+ labels[i] = new_label;
+
+ return (i >= 0);
+}
+
+QWidget* LabelSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName) {
+ (void)cg;
+
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QHBoxLayout *layout = new QHBoxLayout();
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ MythLabel *value = new MythLabel();
+ value->setText(getValue());
+ layout->addWidget(value);
+
+ connect(this, SIGNAL(valueChanged(const QString&)),
+ value, SLOT(setText(const QString&)));
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+QWidget* LineEditSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char *widgetName)
+{
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QBoxLayout *layout = NULL;
+ if (labelAboveWidget)
+ {
+ layout = new QVBoxLayout();
+ widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+ QSizePolicy::Maximum));
+ }
+ else
+ layout = new QHBoxLayout();
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ bxwidget = widget;
+ connect(bxwidget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ edit = new MythLineEdit(
+ settingValue, NULL,
+ QString(QString(widgetName) + "-edit").toLatin1().constData());
+ edit->setHelpText(getHelpText());
+ edit->setText( getValue() );
+ edit->setMinimumHeight(25);
+ layout->addWidget(edit);
+
+ connect(this, SIGNAL(valueChanged(const QString&)),
+ edit, SLOT(setText(const QString&)));
+ connect(edit, SIGNAL(textChanged(const QString&)),
+ this, SLOT(setValue(const QString&)));
+
+ if (cg)
+ connect(edit, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ setRW(rw);
+ SetPasswordEcho(password_echo);
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+void LineEditSetting::widgetInvalid(QObject *obj)
+{
+ if (bxwidget == obj)
+ {
+ bxwidget = NULL;
+ edit = NULL;
+ }
+}
+
+void LineEditSetting::setEnabled(bool b)
+{
+ Configurable::setEnabled(b);
+ if (edit)
+ edit->setEnabled(b);
+}
+
+void LineEditSetting::setVisible(bool b)
+{
+ Configurable::setVisible(b);
+ if (edit)
+ {
+ //QWidget *parent = edit->parentWidget();
+ if (b)
+ edit->show();
+ else
+ edit->hide();
+ }
+}
+
+void LineEditSetting::SetPasswordEcho(bool b)
+{
+ password_echo = b;
+ if (edit)
+ edit->setEchoMode(b ? QLineEdit::Password : QLineEdit::Normal);
+}
+
+void LineEditSetting::setHelpText(const QString &str)
+{
+ if (edit)
+ edit->setHelpText(str);
+ Setting::setHelpText(str);
+}
+
+void BoundedIntegerSetting::setValue(int newValue)
+{
+ newValue = std::max(std::min(newValue, max), min);
+ IntegerSetting::setValue(newValue);
+}
+
+QWidget* SliderSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName)
+{
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QBoxLayout *layout = NULL;
+ if (labelAboveWidget)
+ {
+ layout = new QVBoxLayout();
+ widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+ QSizePolicy::Maximum));
+ }
+ else
+ layout = new QHBoxLayout();
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setObjectName(QString(widgetName) + "-label");
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ MythSlider *slider = new MythSlider(
+ NULL, QString(QString(widgetName) + "-slider").toLatin1().constData());
+ slider->setHelpText(getHelpText());
+ slider->setMinimum(min);
+ slider->setMaximum(max);
+ slider->setOrientation( Qt::Horizontal );
+ slider->setSingleStep(step);
+ slider->setValue(intValue());
+ layout->addWidget(slider);
+
+ QLCDNumber *lcd = new QLCDNumber();
+ lcd->setObjectName(QString(QString(widgetName) + "-lcd")
+ .toLatin1().constData());
+ lcd->setMode(QLCDNumber::Dec);
+ lcd->setSegmentStyle(QLCDNumber::Flat);
+ lcd->display(intValue());
+ layout->addWidget(lcd);
+
+ connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
+ connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
+ connect(this, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
+
+ if (cg)
+ connect(slider, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+SpinBoxSetting::SpinBoxSetting(
+ Storage *_storage, int _min, int _max, int _step,
+ bool _allow_single_step, QString _special_value_text) :
+ BoundedIntegerSetting(_storage, _min, _max, _step),
+ bxwidget(NULL), spinbox(NULL), relayEnabled(true),
+ sstep(_allow_single_step), svtext("")
+{
+ if (!_special_value_text.isEmpty())
+ svtext = _special_value_text;
+
+ IntegerSetting *iset = (IntegerSetting *) this;
+ connect(iset, SIGNAL(valueChanged( int)),
+ this, SLOT( relayValueChanged(int)));
+}
+
+QWidget* SpinBoxSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName)
+{
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QBoxLayout *layout = NULL;
+ if (labelAboveWidget)
+ {
+ layout = new QVBoxLayout();
+ widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+ QSizePolicy::Maximum));
+ }
+ else
+ layout = new QHBoxLayout();
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ bxwidget = widget;
+ connect(bxwidget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ QString sbname = QString(widgetName) + "MythSpinBox";
+ spinbox = new MythSpinBox(NULL, sbname.toLatin1().constData(), sstep);
+ spinbox->setHelpText(getHelpText());
+ spinbox->setMinimum(min);
+ spinbox->setMaximum(max);
+ spinbox->setMinimumHeight(25);
+ layout->addWidget(spinbox);
+
+ // only set step size if greater than default (1), otherwise
+ // this will screw up the single-step/jump behavior of the MythSpinBox
+ if (1 < step)
+ spinbox->setSingleStep(step);
+ spinbox->setValue(intValue());
+ if (!svtext.isEmpty())
+ spinbox->setSpecialValueText(svtext);
+
+ connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
+
+ if (cg)
+ connect(spinbox, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+void SpinBoxSetting::widgetInvalid(QObject *obj)
+{
+ if (bxwidget == obj)
+ {
+ bxwidget = NULL;
+ spinbox = NULL;
+ }
+}
+
+void SpinBoxSetting::setValue(int newValue)
+{
+ newValue = std::max(std::min(newValue, max), min);
+ if (spinbox && (spinbox->value() != newValue))
+ {
+ //int old = intValue();
+ spinbox->setValue(newValue);
+ }
+ else if (intValue() != newValue)
+ {
+ BoundedIntegerSetting::setValue(newValue);
+ }
+}
+
+void SpinBoxSetting::setFocus(void)
+{
+ if (spinbox)
+ spinbox->setFocus();
+}
+
+void SpinBoxSetting::clearFocus(void)
+{
+ if (spinbox)
+ spinbox->clearFocus();
+}
+
+bool SpinBoxSetting::hasFocus(void) const
+{
+ if (spinbox)
+ return spinbox->hasFocus();
+
+ return false;
+}
+
+void SpinBoxSetting::relayValueChanged(int newValue)
+{
+ if (relayEnabled)
+ emit valueChanged(configName, newValue);
+}
+
+void SpinBoxSetting::setHelpText(const QString &str)
+{
+ if (spinbox)
+ spinbox->setHelpText(str);
+ BoundedIntegerSetting::setHelpText(str);
+}
+
+QWidget* SelectLabelSetting::configWidget(ConfigurationGroup *cg,
+ QWidget *parent,
+ const char *widgetName)
+{
+ (void)cg;
+
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QBoxLayout *layout = NULL;
+ if (labelAboveWidget)
+ {
+ layout = new QVBoxLayout();
+ widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+ QSizePolicy::Maximum));
+ }
+ else
+ layout = new QHBoxLayout();
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+
+ MythLabel *value = new MythLabel();
+ value->setText(labels[current]);
+ layout->addWidget(value);
+
+ connect(this, SIGNAL(valueChanged(const QString&)),
+ value, SLOT(setText(const QString&)));
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+QWidget* ComboBoxSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName)
+{
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QBoxLayout *layout = NULL;
+ if (labelAboveWidget)
+ {
+ layout = new QVBoxLayout();
+ widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+ QSizePolicy::Maximum));
+ }
+ else
+ layout = new QHBoxLayout();
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ bxwidget = widget;
+ connect(bxwidget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ cbwidget = new MythComboBox(rw);
+ cbwidget->setHelpText(getHelpText());
+
+ for(unsigned int i = 0 ; i < labels.size() ; ++i)
+ cbwidget->insertItem(labels[i]);
+
+ resetMaxCount(cbwidget->count());
+
+ if (isSet)
+ cbwidget->setCurrentIndex(current);
+
+ if (1 < step)
+ cbwidget->setStep(step);
+
+ connect(cbwidget, SIGNAL(highlighted(int)),
+ this, SLOT(setValue(int)));
+ connect(cbwidget, SIGNAL(activated(int)),
+ this, SLOT(setValue(int)));
+ connect(this, SIGNAL(selectionsCleared()),
+ cbwidget, SLOT(clear()));
+
+ if (rw)
+ connect(cbwidget, SIGNAL(editTextChanged(const QString &)),
+ this, SLOT(editTextChanged(const QString &)));
+
+ if (cg)
+ connect(cbwidget, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ cbwidget->setMinimumHeight(25);
+
+ layout->addWidget(cbwidget);
+ layout->setStretchFactor(cbwidget, 1);
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+void ComboBoxSetting::widgetInvalid(QObject *obj)
+{
+ if (bxwidget == obj)
+ {
+ bxwidget = NULL;
+ cbwidget = NULL;
+ }
+}
+
+void ComboBoxSetting::setEnabled(bool b)
+{
+ Configurable::setEnabled(b);
+ if (cbwidget)
+ cbwidget->setEnabled(b);
+}
+
+void ComboBoxSetting::setVisible(bool b)
+{
+ Configurable::setVisible(b);
+ if (cbwidget)
+ {
+ if (b)
+ cbwidget->show();
+ else
+ cbwidget->hide();
+ }
+}
+
+void ComboBoxSetting::setValue(const QString &newValue)
+{
+ for (uint i = 0; i < values.size(); i++)
+ {
+ if (values[i] == newValue)
+ {
+ setValue(i);
+ break;
+ }
+ }
+
+ if (rw)
+ {
+ Setting::setValue(newValue);
+ if (cbwidget)
+ cbwidget->setCurrentIndex(current);
+ }
+}
+
+void ComboBoxSetting::setValue(int which)
+{
+ if (cbwidget)
+ cbwidget->setCurrentIndex(which);
+ SelectSetting::setValue(which);
+}
+
+void ComboBoxSetting::addSelection(
+ const QString &label, QString value, bool select)
+{
+ if ((findSelection(label, value) < 0) && cbwidget)
+ {
+ resetMaxCount(cbwidget->count()+1);
+ cbwidget->insertItem(label);
+ }
+
+ SelectSetting::addSelection(label, value, select);
+
+ if (cbwidget && isSet)
+ cbwidget->setCurrentIndex(current);
+}
+
+bool ComboBoxSetting::removeSelection(const QString &label, QString value)
+{
+ SelectSetting::removeSelection(label, value);
+ if (!cbwidget)
+ return true;
+
+ for (uint i = 0; ((int) i) < cbwidget->count(); i++)
+ {
+ if (cbwidget->itemText(i) == label)
+ {
+ cbwidget->removeItem(i);
+ if (isSet)
+ cbwidget->setCurrentIndex(current);
+ resetMaxCount(cbwidget->count());
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void ComboBoxSetting::editTextChanged(const QString &newText)
+{
+ if (cbwidget)
+ {
+ for (uint i = 0; i < labels.size(); i++)
+ if (labels[i] == newText)
+ return;
+
+ if (labels.size() == static_cast<size_t>(cbwidget->maxCount()))
+ {
+ SelectSetting::removeSelection(labels[cbwidget->maxCount() - 1],
+ values[cbwidget->maxCount() - 1]);
+ cbwidget->setItemText(cbwidget->maxCount() - 1, newText);
+ }
+ else
+ {
+ cbwidget->insertItem(newText);
+ }
+
+ SelectSetting::addSelection(newText, newText, true);
+ cbwidget->setCurrentIndex(cbwidget->maxCount() - 1);
+ }
+}
+
+void ComboBoxSetting::setHelpText(const QString &str)
+{
+ if (cbwidget)
+ cbwidget->setHelpText(str);
+ SelectSetting::setHelpText(str);
+}
+
+void HostRefreshRateComboBox::ChangeResolution(const QString& resolution)
+{
+ clearSelections();
+
+ const vector<double> list = GetRefreshRates(resolution);
+ addSelection(QObject::tr("Auto"), "0");
+ int hz50 = -1, hz60 = -1;
+ for (uint i=0; i<list.size(); ++i)
+ {
+ QString sel = QString::number((double) list[i],'f', 3);
+ addSelection(sel+" Hz", sel);
+ hz50 = (fabs(50.0 - list[i]) < 0.01) ? i : hz50;
+ hz60 = (fabs(60.0 - list[i]) < 0.01) ? i : hz60;
+ }
+
+ setValue(0);
+ if ("640x480" == resolution || "720x480" == resolution)
+ setValue(hz60+1);
+ if ("640x576" == resolution || "720x576" == resolution)
+ setValue(hz50+1);
+
+ setEnabled(list.size());
+}
+
+const vector<double> HostRefreshRateComboBox::GetRefreshRates(const QString &res)
+{
+ QStringList slist = res.split("x");
+ int w = 0, h = 0;
+ bool ok0 = false, ok1 = false;
+ if (2 == slist.size())
+ {
+ w = slist[0].toInt(&ok0);
+ h = slist[1].toInt(&ok1);
+ }
+
+// DisplayRes *display_res = DisplayRes::GetDisplayRes();
+// if (display_res && ok0 && ok1)
+// return display_res->GetRefreshRates(w, h);
+
+ vector<double> list;
+ return list;
+}
+
+void PathSetting::addSelection(const QString& label,
+ QString value,
+ bool select) {
+ QString pathname = label;
+ if (value != QString::null)
+ pathname = value;
+
+ if (mustexist && !QFile(pathname).exists())
+ return;
+
+ ComboBoxSetting::addSelection(label, value, select);
+}
+
+QTime TimeSetting::timeValue(void) const {
+ return QTime::fromString(getValue(), Qt::ISODate);
+}
+
+void TimeSetting::setValue(const QTime& newValue) {
+ Setting::setValue(newValue.toString(Qt::ISODate));
+}
+
+QString DateSetting::getValue(void) const
+{
+ return settingValue;
+}
+
+QDate DateSetting::dateValue(void) const {
+ return QDate::fromString(getValue(), Qt::ISODate);
+}
+
+void DateSetting::setValue(const QDate& newValue) {
+ Setting::setValue(newValue.toString(Qt::ISODate));
+}
+
+void DateSetting::setValue(const QString &newValue)
+{
+ QDate date = QDate::fromString(newValue, Qt::ISODate);
+ if (date.isValid())
+ setValue(date);
+}
+
+void TimeSetting::setValue(const QString &newValue)
+{
+ QTime time = QTime::fromString(newValue, Qt::ISODate);
+ if (time.isValid())
+ setValue(time);
+}
+
+QWidget* CheckBoxSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName) {
+ widget = new MythCheckBox(parent, widgetName);
+ connect(widget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ widget->setHelpText(getHelpText());
+ widget->setText(getLabel());
+ widget->setChecked(boolValue());
+
+ connect(widget, SIGNAL(toggled(bool)),
+ this, SLOT(setValue(bool)));
+ connect(this, SIGNAL(valueChanged(bool)),
+ widget, SLOT(setChecked(bool)));
+
+ if (cg)
+ connect(widget, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ return widget;
+}
+
+void CheckBoxSetting::widgetInvalid(QObject *obj)
+{
+ widget = (widget == obj) ? NULL : widget;
+}
+
+void CheckBoxSetting::setVisible(bool b)
+{
+ BooleanSetting::setVisible(b);
+ if (widget)
+ {
+ if (b)
+ widget->show();
+ else
+ widget->hide();
+ }
+}
+
+void CheckBoxSetting::setLabel(QString str)
+{
+ // QT treats a single ampersand as special,
+ // we must double up ampersands to display them
+ str = str.replace(" & ", " && ");
+ BooleanSetting::setLabel(str);
+ if (widget)
+ widget->setText(str);
+}
+
+void CheckBoxSetting::setEnabled(bool fEnabled)
+{
+ BooleanSetting::setEnabled(fEnabled);
+ if (widget)
+ widget->setEnabled(fEnabled);
+}
+
+void CheckBoxSetting::setHelpText(const QString &str)
+{
+ if (widget)
+ widget->setHelpText(str);
+ BooleanSetting::setHelpText(str);
+}
+
+void AutoIncrementDBSetting::Save(QString table)
+{
+ if (intValue() == 0)
+ {
+ // Generate a new, unique ID
+ QString querystr = QString("INSERT INTO " + table + " ("
+ + GetColumnName() + ") VALUES (0);");
+
+ MSqlQuery query(MSqlQuery::InitCon());
+
+ if (!query.exec(querystr))
+ {
+ MythDB::DBError("inserting row", query);
+ return;
+ }
+ // XXX -- HACK BEGIN:
+ // lastInsertID fails with "QSqlQuery::value: not positioned on a valid record"
+ // if we get a invalid QVariant we workaround the problem by taking advantage
+ // of mysql always incrementing the auto increment pointer
+ // this breaks if someone modifies the auto increment pointer
+ //setValue(query.lastInsertId().toInt());
+
+ QVariant var = query.lastInsertId();
+
+ if (var.type())
+ setValue(var.toInt());
+ else
+ {
+ querystr = QString("SELECT MAX(" + GetColumnName() + ") FROM " + table + ";");
+ if (query.exec(querystr) && query.next())
+ {
+ int lii = query.value(0).toInt();
+ lii = lii ? lii : 1;
+ setValue(lii);
+ }
+ else
+ LOG(VB_GENERAL, LOG_EMERG,
+ "Can't determine the Id of the last insert "
+ "QSqlQuery.lastInsertId() failed, the workaround "
+ "failed too!");
+ }
+ // XXX -- HACK END:
+ }
+}
+
+void AutoIncrementDBSetting::Save(void)
+{
+ Save(GetTableName());
+}
+
+void ListBoxSetting::setEnabled(bool b)
+{
+ Configurable::setEnabled(b);
+ if (lbwidget)
+ lbwidget->setEnabled(b);
+}
+
+void ListBoxSetting::clearSelections(void)
+{
+ SelectSetting::clearSelections();
+ if (lbwidget)
+ lbwidget->clear();
+}
+
+void ListBoxSetting::addSelection(
+ const QString &label, QString value, bool select)
+{
+ SelectSetting::addSelection(label, value, select);
+ if (lbwidget)
+ {
+ lbwidget->insertItem(label);
+ //lbwidget->triggerUpdate(true);
+ }
+};
+
+bool ListBoxSetting::ReplaceLabel(
+ const QString &new_label, const QString &value)
+{
+ int i = getValueIndex(value);
+
+ if ((i >= 0) && SelectSetting::ReplaceLabel(label, value) && lbwidget)
+ {
+ lbwidget->changeItem(new_label, i);
+ return true;
+ }
+
+ return false;
+}
+
+QWidget* ListBoxSetting::configWidget(ConfigurationGroup *cg, QWidget* parent,
+ const char* widgetName)
+{
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+
+ QVBoxLayout *layout = new QVBoxLayout();
+
+ if (getLabel() != "")
+ {
+ MythLabel *label = new MythLabel();
+ label->setText(getLabel());
+ layout->addWidget(label);
+ }
+
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ bxwidget = widget;
+ connect(bxwidget, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ lbwidget = new MythListBox(NULL);
+ lbwidget->setHelpText(getHelpText());
+ if (eventFilter)
+ lbwidget->installEventFilter(eventFilter);
+
+ for(unsigned int i = 0 ; i < labels.size() ; ++i) {
+ lbwidget->insertItem(labels[i]);
+ if (isSet && current == i)
+ lbwidget->setCurrentRow(i);
+ }
+
+ connect(this, SIGNAL(selectionsCleared()),
+ lbwidget, SLOT( clear()));
+ connect(this, SIGNAL(valueChanged(const QString&)),
+ lbwidget, SLOT( setCurrentItem(const QString&)));
+
+ connect(lbwidget, SIGNAL(accepted(int)),
+ this, SIGNAL(accepted(int)));
+ connect(lbwidget, SIGNAL(menuButtonPressed(int)),
+ this, SIGNAL(menuButtonPressed(int)));
+ connect(lbwidget, SIGNAL(editButtonPressed(int)),
+ this, SIGNAL(editButtonPressed(int)));
+ connect(lbwidget, SIGNAL(deleteButtonPressed(int)),
+ this, SIGNAL(deleteButtonPressed(int)));
+
+ connect(lbwidget, SIGNAL(highlighted(int)),
+ this, SLOT( setValueByIndex(int)));
+
+ if (cg)
+ connect(lbwidget, SIGNAL(changeHelpText(QString)), cg,
+ SIGNAL(changeHelpText(QString)));
+
+ lbwidget->setFocus();
+ lbwidget->setSelectionMode(selectionMode);
+ layout->addWidget(lbwidget);
+
+ widget->setLayout(layout);
+
+ return widget;
+}
+
+void ListBoxSetting::widgetInvalid(QObject *obj)
+{
+ if (bxwidget == obj)
+ {
+ bxwidget = NULL;
+ lbwidget = NULL;
+ }
+}
+
+void ListBoxSetting::setSelectionMode(MythListBox::SelectionMode mode)
+{
+ selectionMode = mode;
+ if (lbwidget)
+ lbwidget->setSelectionMode(selectionMode);
+}
+
+void ListBoxSetting::setValueByIndex(int index)
+{
+ if (((uint)index) < values.size())
+ setValue(values[index]);
+}
+
+void ListBoxSetting::setHelpText(const QString &str)
+{
+ if (lbwidget)
+ lbwidget->setHelpText(str);
+ SelectSetting::setHelpText(str);
+}
+
+HostnameSetting::HostnameSetting(Storage *storage) : Setting(storage)
+{
+ setVisible(false);
+
+ setValue(gCoreContext->GetHostName());
+}
+
+void ChannelSetting::fillSelections(SelectSetting* setting) {
+
+ // this should go somewhere else, in something that knows about
+ // channels and how they're stored in the database. We're just a
+ // selector.
+
+ MSqlQuery query(MSqlQuery::InitCon());
+ query.prepare("SELECT name, chanid FROM channel;");
+ if (query.exec() && query.isActive() && query.size() > 0)
+ while (query.next())
+ setting->addSelection(query.value(0).toString(),
+ QString::number(query.value(1).toInt()));
+}
+
+QWidget* ButtonSetting::configWidget(ConfigurationGroup* cg, QWidget* parent,
+ const char* widgetName)
+{
+ (void) cg;
+ button = new MythPushButton(parent, widgetName);
+ connect(button, SIGNAL(destroyed(QObject*)),
+ this, SLOT(widgetDeleted(QObject*)));
+
+ button->setText(getLabel());
+ button->setHelpText(getHelpText());
+
+ connect(button, SIGNAL(pressed()), this, SIGNAL(pressed()));
+ connect(button, SIGNAL(pressed()), this, SLOT(SendPressedString()));
+
+ if (cg)
+ connect(button, SIGNAL(changeHelpText(QString)),
+ cg, SIGNAL(changeHelpText(QString)));
+
+ return button;
+}
+
+void ButtonSetting::widgetInvalid(QObject *obj)
+{
+ button = (button == obj) ? NULL : button;
+}
+
+void ButtonSetting::SendPressedString(void)
+{
+ emit pressed(name);
+}
+
+void ButtonSetting::setEnabled(bool fEnabled)
+{
+ Configurable::setEnabled(fEnabled);
+ if (button)
+ button->setEnabled(fEnabled);
+}
+
+void ButtonSetting::setLabel(QString str)
+{
+ if (button)
+ button->setText(str);
+ Setting::setLabel(str);
+}
+
+void ButtonSetting::setHelpText(const QString &str)
+{
+ if (button)
+ button->setHelpText(str);
+ Setting::setHelpText(str);
+}
+
+QWidget* ProgressSetting::configWidget(ConfigurationGroup* cg, QWidget* parent,
+ const char* widgetName) {
+ (void)cg;
+ QWidget *widget = new QWidget(parent);
+ widget->setObjectName(widgetName);
+ QBoxLayout *layout = new QHBoxLayout();
+ layout->setContentsMargins(0,0,0,0);
+ layout->setSpacing(0);
+
+ if (getLabel() != "")
+ {
+ MythLabel* label = new MythLabel();
+ label->setObjectName(QString(widgetName) + "_label");
+ label->setText(getLabel() + ": ");
+ layout->addWidget(label);
+ }
+
+ QProgressBar *progress = new QProgressBar(NULL);
+ progress->setObjectName(widgetName);
+ progress->setRange(0,totalSteps);
+ layout->addWidget(progress);
+
+ connect(this, SIGNAL(valueChanged(int)), progress, SLOT(setValue(int)));
+ progress->setValue(intValue());
+
+ widget->setLayout(layout);
+
+ return widget;
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/settings.h b/abs/core/mythinstall/MythVantage-app/mythinstall/settings.h
new file mode 100644
index 0000000..2df5dcd
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/settings.h
@@ -0,0 +1,835 @@
+// -*- Mode: c++ -*-
+
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+// C++ headers
+#include <vector>
+
+// Qt headers
+#include <QObject>
+#include <QDate>
+#include <QTime>
+
+// MythTV headers
+#include "mythexp.h"
+#include "mythwidgets.h"
+#include "mythstorage.h"
+
+class QWidget;
+class ConfigurationGroup;
+class QDir;
+class Setting;
+
+class MPUBLIC Configurable : public QObject
+{
+ Q_OBJECT
+
+ public:
+ /// Create and return a QWidget for configuring this entity
+ /// Note: Any class calling this should call widgetInvalid()
+ /// before configWidget() is called on the class again,
+ /// and before the class is deleted; just before removing
+ /// the instance from a layout or scheduling the delete
+ /// of a parent container is a good time. Some UI classes
+ /// depend on this for properly updating the UI.
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+ /// Tell any Configurable keeping a pointer to a widget,
+ /// that the pointer returned by an earlier configWidget
+ /// call is invalid.
+ /// Note: It is possible that this may be called after
+ /// configWidget() has been called another time
+ /// so you must check the pointer param.
+ virtual void widgetInvalid(QObject*) { }
+
+ // A name for looking up the setting
+ void setName(const QString &str)
+ {
+ configName = str;
+ if (label.isEmpty())
+ setLabel(str);
+ }
+ QString getName(void) const { return configName; }
+ virtual Setting *byName(const QString &name) = 0;
+
+ // A label displayed to the user
+ virtual void setLabel(QString str) { label = str; }
+ QString getLabel(void) const { return label; }
+ void setLabelAboveWidget(bool l = true) { labelAboveWidget = l; }
+
+ virtual void setHelpText(const QString &str)
+ { helptext = str; }
+ QString getHelpText(void) const { return helptext; }
+
+ void setVisible(bool b) { visible = b; };
+ bool isVisible(void) const { return visible; };
+
+ virtual void setEnabled(bool b) { enabled = b; }
+ bool isEnabled() { return enabled; }
+
+ Storage *GetStorage(void) { return storage; }
+
+ public slots:
+ virtual void enableOnSet(const QString &val);
+ virtual void enableOnUnset(const QString &val);
+ virtual void widgetDeleted(QObject *obj);
+
+ protected:
+ explicit Configurable(Storage *_storage) :
+ labelAboveWidget(false), enabled(true), storage(_storage),
+ configName(""), label(""), helptext(""), visible(true) { }
+ virtual ~Configurable() { }
+
+ protected:
+ bool labelAboveWidget;
+ bool enabled;
+ Storage *storage;
+ QString configName;
+ QString label;
+ QString helptext;
+ bool visible;
+};
+
+class MPUBLIC Setting : public Configurable, public StorageUser
+{
+ Q_OBJECT
+
+ public:
+ // Gets
+ virtual QString getValue(void) const;
+
+ // non-const Gets
+ virtual Setting *byName(const QString &name)
+ { return (name == configName) ? this : NULL; }
+
+ // StorageUser
+ void SetDBValue(const QString &val) { setValue(val); }
+ QString GetDBValue(void) const { return getValue(); }
+ public slots:
+ virtual void setValue(const QString &newValue);
+
+ signals:
+ void valueChanged(const QString&);
+
+ protected:
+ explicit Setting(Storage *_storage) : Configurable(_storage) {};
+ virtual ~Setting() {};
+
+ protected:
+ QString settingValue;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+// Read-only display of a setting
+class MPUBLIC LabelSetting : public Setting
+{
+ protected:
+ explicit LabelSetting(Storage *_storage) : Setting(_storage) { }
+ public:
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+};
+
+class MPUBLIC LineEditSetting : public Setting
+{
+ protected:
+ LineEditSetting(Storage *_storage, bool readwrite = true) :
+ Setting(_storage), bxwidget(NULL), edit(NULL),
+ rw(readwrite), password_echo(false) { }
+
+ public:
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+ virtual void widgetInvalid(QObject *obj);
+
+ void setRW(bool readwrite = true)
+ {
+ rw = readwrite;
+ if (edit)
+ edit->setRW(rw);
+ }
+
+ void setRO(void) { setRW(false); }
+
+ virtual void setEnabled(bool b);
+ virtual void setVisible(bool b);
+ virtual void SetPasswordEcho(bool b);
+
+ virtual void setHelpText(const QString &str);
+
+ private:
+ QWidget *bxwidget;
+ MythLineEdit *edit;
+ bool rw;
+ bool password_echo;
+};
+
+// TODO: set things up so that setting the value as a string emits
+// the int signal also
+class MPUBLIC IntegerSetting : public Setting
+{
+ Q_OBJECT
+
+ protected:
+ explicit IntegerSetting(Storage *_storage) : Setting(_storage)
+ {
+ settingValue = QString::number(0);
+ }
+
+ public:
+ int intValue(void) const { return settingValue.toInt(); }
+
+ public slots:
+ virtual void setValue(int newValue)
+ {
+ Setting::setValue(QString::number(newValue));
+ emit valueChanged(newValue);
+ }
+ virtual void setValue(const QString &nv) { setValue(nv.toInt()); }
+
+ signals:
+ void valueChanged(int newValue);
+};
+
+class MPUBLIC BoundedIntegerSetting : public IntegerSetting
+{
+ protected:
+ BoundedIntegerSetting(Storage *_storage, int _min, int _max, int _step) :
+ IntegerSetting(_storage), min(_min), max(_max), step(_step) { }
+
+ public:
+ virtual void setValue(int newValue);
+ virtual void setValue(const QString &nv) { setValue(nv.toInt()); }
+
+ protected:
+ int min;
+ int max;
+ int step;
+};
+
+class MPUBLIC SliderSetting: public BoundedIntegerSetting
+{
+ Q_OBJECT
+
+ protected:
+ SliderSetting(Storage *_storage, int min, int max, int step) :
+ BoundedIntegerSetting(_storage, min, max, step) { }
+ public:
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+};
+
+class MPUBLIC SpinBoxSetting: public BoundedIntegerSetting
+{
+ Q_OBJECT
+
+ public:
+ SpinBoxSetting(Storage *_storage, int min, int max, int step,
+ bool allow_single_step = false,
+ QString special_value_text = "");
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+ virtual void widgetInvalid(QObject *obj);
+
+ void setFocus(void);
+ void clearFocus(void);
+ bool hasFocus(void) const;
+
+ void SetRelayEnabled(bool enabled) { relayEnabled = enabled; }
+ bool IsRelayEnabled(void) const { return relayEnabled; }
+
+ virtual void setHelpText(const QString &str);
+
+ public slots:
+ virtual void setValue(int newValue);
+ virtual void setValue(const QString &nv) { setValue(nv.toInt()); }
+
+ signals:
+ void valueChanged(const QString &name, int newValue);
+
+ private slots:
+ void relayValueChanged(int newValue);
+
+ private:
+ QWidget *bxwidget;
+ MythSpinBox *spinbox;
+ bool relayEnabled;
+ bool sstep;
+ QString svtext;
+};
+
+class MPUBLIC SelectSetting : public Setting
+{
+ Q_OBJECT
+
+ protected:
+ explicit SelectSetting(Storage *_storage) :
+ Setting(_storage), current(0), isSet(false) { }
+
+ public:
+ virtual int findSelection( const QString &label,
+ QString value = QString::null) const;
+ virtual void addSelection( const QString &label,
+ QString value = QString::null,
+ bool select = false);
+ virtual bool removeSelection(const QString &label,
+ QString value = QString::null);
+
+ virtual void clearSelections(void);
+
+ virtual void fillSelectionsFromDir(const QDir &dir, bool absPath=true);
+
+ virtual uint size(void) const { return labels.size(); }
+
+ virtual QString GetLabel(uint i) const
+ { return (i < labels.size()) ? labels[i] : QString::null; }
+ virtual QString GetValue(uint i) const
+ { return (i < values.size()) ? values[i] : QString::null; }
+
+ signals:
+ void selectionAdded(const QString &label, QString value);
+ void selectionRemoved(const QString &label, const QString &value);
+ void selectionsCleared(void);
+
+ public slots:
+ virtual void setValue(const QString &newValue);
+ virtual void setValue(int which);
+
+ virtual QString getSelectionLabel(void) const;
+ virtual int getValueIndex(QString value);
+
+ protected:
+ virtual bool ReplaceLabel(
+ const QString &new_label, const QString &value);
+
+ typedef std::vector<QString> selectionList;
+ selectionList labels;
+ selectionList values;
+ unsigned current;
+ bool isSet;
+};
+
+class MPUBLIC SelectLabelSetting : public SelectSetting
+{
+ protected:
+ explicit SelectLabelSetting(Storage *_storage) : SelectSetting(_storage) { }
+
+ public:
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+};
+
+class MPUBLIC ComboBoxSetting: public SelectSetting
+{
+ Q_OBJECT
+
+ protected:
+ ComboBoxSetting(Storage *_storage, bool _rw = false, int _step = 1) :
+ SelectSetting(_storage), rw(_rw),
+ bxwidget(NULL), cbwidget(NULL), step(_step) { }
+
+ public:
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+ virtual void widgetInvalid(QObject *obj);
+
+ void setFocus(void) { if (cbwidget) cbwidget->setFocus(); }
+ void resetMaxCount(int count)
+ { if (cbwidget) cbwidget->setMaxCount(count + rw); }
+
+ virtual void setEnabled(bool b);
+ virtual void setVisible(bool b);
+
+ virtual void setHelpText(const QString &str);
+
+ public slots:
+ virtual void SetDBValue(const QString &newValue)
+ { SelectSetting::setValue(newValue); }
+ virtual void setValue(const QString &newValue);
+ virtual void setValue(int which);
+
+ void addSelection(const QString &label,
+ QString value = QString::null,
+ bool select = false);
+ bool removeSelection(const QString &label,
+ QString value = QString::null);
+ void editTextChanged(const QString &newText);
+
+ private:
+ bool rw;
+ QWidget *bxwidget;
+ MythComboBox *cbwidget;
+
+ protected:
+ int step;
+};
+
+class MPUBLIC ListBoxSetting: public SelectSetting
+{
+ Q_OBJECT
+
+ public:
+ explicit ListBoxSetting(Storage *_storage) :
+ SelectSetting(_storage),
+ bxwidget(NULL), lbwidget(NULL), eventFilter(NULL),
+ selectionMode(MythListBox::SingleSelection) { }
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+ virtual void widgetInvalid(QObject *obj);
+
+ void setFocus(void)
+ { if (lbwidget) lbwidget->setFocus(); }
+ void setSelectionMode(MythListBox::SelectionMode mode);
+ void setCurrentItem(int i)
+ { if (lbwidget) lbwidget->setCurrentRow(i); }
+ void setCurrentItem(const QString &str)
+ { if (lbwidget) lbwidget->setCurrentItem(str, true, false); }
+ int currentItem(void)
+ { return (lbwidget) ? lbwidget->currentRow() : -1; }
+
+ virtual void setEnabled(bool b);
+
+ virtual void clearSelections(void);
+
+ virtual void setHelpText(const QString &str);
+
+ virtual void SetEventFilter(QObject *filter) { eventFilter = filter; }
+ virtual bool ReplaceLabel(
+ const QString &new_label, const QString &value);
+
+ signals:
+ void accepted(int);
+ void menuButtonPressed(int);
+ void editButtonPressed(int);
+ void deleteButtonPressed(int);
+
+ public slots:
+ void addSelection(const QString &label,
+ QString value = QString::null,
+ bool select = false);
+
+ void setValueByIndex(int index);
+
+ protected:
+ QWidget *bxwidget;
+ MythListBox *lbwidget;
+ QObject *eventFilter;
+ MythListBox::SelectionMode selectionMode;
+};
+
+class MPUBLIC BooleanSetting : public Setting
+{
+ Q_OBJECT
+
+ public:
+ explicit BooleanSetting(Storage *_storage) : Setting(_storage) {}
+
+ bool boolValue(void) const { return getValue().toInt(); }
+
+ public slots:
+ virtual void setValue(bool check)
+ {
+ if (check)
+ Setting::setValue("1");
+ else
+ Setting::setValue("0");
+ emit valueChanged(check);
+ };
+
+ virtual void setValue(const QString &newValue)
+ {
+ setValue((newValue=="1" ||
+ newValue.toLower().startsWith("y") ||
+ newValue.toLower().startsWith("t")));
+ }
+
+ signals:
+ void valueChanged(bool);
+};
+
+class MPUBLIC CheckBoxSetting: public BooleanSetting
+{
+ Q_OBJECT
+
+ public:
+ explicit CheckBoxSetting(Storage *_storage) :
+ BooleanSetting(_storage), widget(NULL) { }
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+
+ virtual void widgetInvalid(QObject*);
+
+ virtual void setVisible(bool b);
+ virtual void setLabel(QString str);
+ virtual void setEnabled(bool b);
+
+ virtual void setHelpText(const QString &str);
+
+ protected:
+ MythCheckBox *widget;
+};
+
+class MPUBLIC PathSetting : public ComboBoxSetting
+{
+ Q_OBJECT
+
+ public:
+ PathSetting(Storage *_storage, bool _mustexist):
+ ComboBoxSetting(_storage, true), mustexist(_mustexist) { }
+
+ // TODO: this should support globbing of some sort
+ virtual void addSelection(const QString &label,
+ QString value=QString::null,
+ bool select=false);
+
+ // Use a combobox for now, maybe a modified file dialog later
+ //virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ // const char *widgetName = NULL);
+
+ protected:
+ bool mustexist;
+};
+
+class MPUBLIC HostnameSetting : public Setting
+{
+ Q_OBJECT
+ public:
+ explicit HostnameSetting(Storage *_storage);
+};
+
+class MPUBLIC ChannelSetting : public SelectSetting
+{
+ Q_OBJECT
+ public:
+ explicit ChannelSetting(Storage *_storage) : SelectSetting(_storage)
+ {
+ setLabel("Channel");
+ };
+
+ static void fillSelections(SelectSetting *setting);
+ virtual void fillSelections(void) { fillSelections(this); }
+};
+
+class MPUBLIC DateSetting : public Setting
+{
+ Q_OBJECT
+
+ public:
+ explicit DateSetting(Storage *_storage) : Setting(_storage) { }
+
+ QString getValue(void) const;
+
+ QDate dateValue(void) const;
+
+ public slots:
+ void setValue(const QDate &newValue);
+ void setValue(const QString &newValue);
+};
+
+class MPUBLIC TimeSetting : public Setting
+{
+ Q_OBJECT
+
+ public:
+ explicit TimeSetting(Storage *_storage) : Setting(_storage) { }
+ QTime timeValue(void) const;
+
+ public slots:
+ void setValue(const QTime &newValue);
+ void setValue(const QString &newValue);
+};
+
+class MPUBLIC AutoIncrementDBSetting :
+ public IntegerSetting, public DBStorage
+{
+ Q_OBJECT
+
+ public:
+ AutoIncrementDBSetting(QString _table, QString _column) :
+ IntegerSetting(this), DBStorage(this, _table, _column)
+ {
+ setValue(0);
+ }
+
+ virtual void Load(void) { }
+ virtual void Save(void);
+ virtual void Save(QString destination);
+};
+
+class MPUBLIC ButtonSetting: public Setting
+{
+ Q_OBJECT
+
+ public:
+ ButtonSetting(Storage *_storage, QString _name = "button") :
+ Setting(_storage), name(_name), button(NULL) { }
+
+ virtual QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName=0);
+ virtual void widgetInvalid(QObject *obj);
+
+ virtual void setEnabled(bool b);
+
+ virtual void setLabel(QString);
+
+ virtual void setHelpText(const QString &);
+
+ signals:
+ void pressed(void);
+ void pressed(QString name);
+
+ protected slots:
+ void SendPressedString();
+
+ protected:
+ QString name;
+ MythPushButton *button;
+};
+
+class MPUBLIC ProgressSetting : public IntegerSetting
+{
+ Q_OBJECT
+ public:
+ ProgressSetting(Storage *_storage, int _totalSteps) :
+ IntegerSetting(_storage), totalSteps(_totalSteps) { }
+
+ QWidget *configWidget(ConfigurationGroup *cg, QWidget *parent,
+ const char *widgetName = NULL);
+
+ private:
+ int totalSteps;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+class MPUBLIC TransButtonSetting :
+ public ButtonSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ explicit TransButtonSetting(QString name = "button") :
+ ButtonSetting(this, name), TransientStorage() { }
+};
+
+class MPUBLIC TransLabelSetting :
+ public LabelSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ TransLabelSetting() : LabelSetting(this), TransientStorage() { }
+};
+
+class MPUBLIC TransLineEditSetting :
+ public LineEditSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ explicit TransLineEditSetting(bool rw = true) :
+ LineEditSetting(this, rw), TransientStorage() { }
+};
+
+class MPUBLIC TransCheckBoxSetting :
+ public CheckBoxSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ TransCheckBoxSetting() : CheckBoxSetting(this), TransientStorage() { }
+};
+
+class MPUBLIC TransComboBoxSetting :
+ public ComboBoxSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ TransComboBoxSetting(bool rw = false, int _step = 1) :
+ ComboBoxSetting(this, rw, _step), TransientStorage() { }
+};
+
+class MPUBLIC TransSpinBoxSetting :
+ public SpinBoxSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ TransSpinBoxSetting(int minv, int maxv, int step,
+ bool allow_single_step = false,
+ QString special_value_text = "") :
+ SpinBoxSetting(this, minv, maxv, step,
+ allow_single_step, special_value_text) { }
+};
+
+class MPUBLIC TransListBoxSetting :
+ public ListBoxSetting, public TransientStorage
+{
+ Q_OBJECT
+ public:
+ TransListBoxSetting() : ListBoxSetting(this), TransientStorage() { }
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+class MPUBLIC HostSlider : public SliderSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ HostSlider(const QString &name, int min, int max, int step) :
+ SliderSetting(this, min, max, step),
+ HostDBStorage(this, name) { }
+};
+
+class MPUBLIC HostSpinBox: public SpinBoxSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ HostSpinBox(const QString &name, int min, int max, int step,
+ bool allow_single_step = false) :
+ SpinBoxSetting(this, min, max, step, allow_single_step),
+ HostDBStorage(this, name) { }
+};
+
+class MPUBLIC HostCheckBox : public CheckBoxSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ explicit HostCheckBox(const QString &name) :
+ CheckBoxSetting(this), HostDBStorage(this, name) { }
+ virtual ~HostCheckBox() { ; }
+};
+
+class MPUBLIC HostComboBox : public ComboBoxSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ HostComboBox(const QString &name, bool rw = false) :
+ ComboBoxSetting(this, rw), HostDBStorage(this, name) { }
+ virtual ~HostComboBox() { ; }
+};
+
+class MPUBLIC HostRefreshRateComboBox : public HostComboBox
+{
+ Q_OBJECT
+ public:
+ HostRefreshRateComboBox(const QString &name, bool rw = false) :
+ HostComboBox(name, rw) { }
+ virtual ~HostRefreshRateComboBox() { ; }
+
+ public slots:
+ virtual void ChangeResolution(const QString &resolution);
+
+ private:
+ static const std::vector<double> GetRefreshRates(const QString &resolution);
+};
+
+class MPUBLIC HostTimeBox : public ComboBoxSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ HostTimeBox(const QString &name, const QString &defaultTime = "00:00",
+ const int interval = 1) :
+ ComboBoxSetting(this, false, 30 / interval),
+ HostDBStorage(this, name)
+ {
+ int hour;
+ int minute;
+ QString timeStr;
+
+ for (hour = 0; hour < 24; hour++)
+ {
+ for (minute = 0; minute < 60; minute += interval)
+ {
+ timeStr = timeStr.sprintf("%02d:%02d", hour, minute);
+ addSelection(timeStr, timeStr,
+ timeStr == defaultTime);
+ }
+ }
+ }
+};
+
+class MPUBLIC HostLineEdit: public LineEditSetting, public HostDBStorage
+{
+ Q_OBJECT
+ public:
+ HostLineEdit(const QString &name, bool rw = true) :
+ LineEditSetting(this, rw), HostDBStorage(this, name) { }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+class MPUBLIC GlobalSlider : public SliderSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ GlobalSlider(const QString &name, int min, int max, int step) :
+ SliderSetting(this, min, max, step), GlobalDBStorage(this, name) { }
+};
+
+class MPUBLIC GlobalSpinBox : public SpinBoxSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ GlobalSpinBox(const QString &name, int min, int max, int step,
+ bool allow_single_step = false) :
+ SpinBoxSetting(this, min, max, step, allow_single_step),
+ GlobalDBStorage(this, name) { }
+};
+
+class MPUBLIC GlobalCheckBox : public CheckBoxSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ explicit GlobalCheckBox(const QString &name) :
+ CheckBoxSetting(this), GlobalDBStorage(this, name) { }
+};
+
+class MPUBLIC GlobalComboBox : public ComboBoxSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ GlobalComboBox(const QString &name, bool rw = false) :
+ ComboBoxSetting(this, rw), GlobalDBStorage(this, name) { }
+};
+
+class MPUBLIC GlobalLineEdit : public LineEditSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ GlobalLineEdit(const QString &name, bool rw = true) :
+ LineEditSetting(this, rw), GlobalDBStorage(this, name) { }
+};
+
+class MPUBLIC GlobalTimeBox : public ComboBoxSetting, public GlobalDBStorage
+{
+ Q_OBJECT
+ public:
+ GlobalTimeBox(const QString &name, const QString &defaultTime = "00:00",
+ const int interval = 1) :
+ ComboBoxSetting(this, false, 30 / interval),
+ GlobalDBStorage(this, name)
+ {
+ int hour;
+ int minute;
+ QString timeStr;
+
+ for (hour = 0; hour < 24; hour++)
+ {
+ for (minute = 0; minute < 60; minute += interval)
+ {
+ timeStr = timeStr.sprintf("%02d:%02d", hour, minute);
+ addSelection(timeStr, timeStr,
+ timeStr == defaultTime);
+ }
+ }
+ }
+};
+
+#ifndef MYTHCONFIG
+#include "mythconfigdialogs.h"
+#include "mythconfiggroups.h"
+#endif // MYTHCONFIG
+
+#endif // SETTINGS_H
diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 75ffe99..24a8235 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,11 +1,11 @@
# Maintainer: Jams
pkgname=mythinstall
-pkgver=8.5.1
-pkgrel=4
+pkgver=8.6
+pkgrel=1
pkgdesc="LinHES installer/systemconfig GUI."
-arch=('i686' 'x86_64')
-depends=('mythtv>=29' 'LinHES-config')
-makedepends=('mythtv>=29')
+arch=('x86_64')
+depends=('mythtv>=30.0' 'LinHES-config')
+makedepends=('mythtv>=30.0')
logofiles=`ls logo*.png`
source=('install-ui.xml' $logofiles)
diff --git a/abs/core/mythtv/stable-29/git_src/git_hash b/abs/core/mythtv/stable-29/git_src/git_hash
index 3fed727..b17c7bf 100644
--- a/abs/core/mythtv/stable-29/git_src/git_hash
+++ b/abs/core/mythtv/stable-29/git_src/git_hash
@@ -1 +1 @@
-951f1fe7ea0bd54a8bb5ef08f3b55feee5169340
+af5d819671ebd4fe4fbd1ff6c2fc978561bde9f3
diff --git a/abs/core/mythtv/stable-29/mythplugins/PKGBUILD b/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
index 69128c3..57288c0 100644
--- a/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
'mythweather'
'mythzoneminder')
pkgver=29.1
-pkgrel=11
+pkgrel=12
arch=('x86_64')
url="http://www.mythtv.org"
license=('GPL')
diff --git a/abs/core/mythtv/stable-29/mythtv/PKGBUILD b/abs/core/mythtv/stable-29/mythtv/PKGBUILD
index 1e3d14c..6dae83c 100644
--- a/abs/core/mythtv/stable-29/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-29/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythtv
pkgver=29.1
-pkgrel=11
+pkgrel=12
commit_hash=`cat ../git_src/git_hash`
pkgdesc="A Homebrew PVR project $commit_hash"
arch=('x86_64')
diff --git a/abs/core/mythtv/stable-30/git_src/checkout_mythtv.sh b/abs/core/mythtv/stable-30/git_src/checkout_mythtv.sh
new file mode 100755
index 0000000..6ad4f0d
--- /dev/null
+++ b/abs/core/mythtv/stable-30/git_src/checkout_mythtv.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+#Quick script used to checkout the MythTV source
+#This source should be used build all mythplugins & main program
+
+_gitroot="https://github.com/MythTV/mythtv.git"
+_gitname="mythtv"
+_gitbranch="fixes/30"
+
+startdir=`pwd`
+
+#Set this to True, to update mythtv to the latest.
+#If not true then it will use the hash stored in git_hash
+_current="True"
+
+_checkoutHASH=`cat git_hash`
+
+if [ -d $_gitname ]
+then
+ cd $_gitname
+ git checkout $_gitbranch
+ git pull
+ echo "The local files are updated."
+ cd $startdir
+else
+ git clone -b $_gitbranch $_gitroot
+fi
+
+if [ -d $_gitname ]
+then
+ cd $_gitname
+ if [ $_current == True ]
+ then
+ git rev-parse HEAD > $startdir/git_hash
+ else
+ git checkout $_checkoutHASH
+ fi
+ cd mythtv
+ sh ./version.sh `pwd`
+fi
+echo "GIT checkout done or server timeout"
diff --git a/abs/core/mythtv/stable-30/git_src/checkout_mythweb.sh b/abs/core/mythtv/stable-30/git_src/checkout_mythweb.sh
new file mode 100755
index 0000000..5ba77cb
--- /dev/null
+++ b/abs/core/mythtv/stable-30/git_src/checkout_mythweb.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#Quick script used to checkout the Mythweb source
+#This source should be used build all mythplugins & main program
+
+_gitroot="https://github.com/MythTV/mythweb.git"
+_gitname="mythweb"
+_gitbranch="fixes/30"
+
+startdir=`pwd`
+
+#Set this to True, to update mythtv to the latest.
+#If not true then it will use the hash stored in git_hash
+_current="True"
+
+_checkoutHASH=`cat git_hash_web`
+
+if [ -d $_gitname ]
+then
+ cd $_gitname
+ git checkout $_gitbranch
+ git pull
+ echo "The local files are updated."
+ cd $startdir
+else
+ git clone -b $_gitbranch $_gitroot
+fi
+
+if [ -d $_gitname ]
+then
+ cd $_gitname
+ if [ $_current == True ]
+ then
+ git rev-parse HEAD > $startdir/git_hash_web
+ else
+ git checkout $_checkoutHASH
+ fi
+fi
+echo "GIT checkout done or server timeout"
diff --git a/abs/core/mythtv/stable-30/git_src/git_hash b/abs/core/mythtv/stable-30/git_src/git_hash
new file mode 100644
index 0000000..49df4ff
--- /dev/null
+++ b/abs/core/mythtv/stable-30/git_src/git_hash
@@ -0,0 +1 @@
+60cfb7c05ae21d0049537aaa66f8f70a836a1138
diff --git a/abs/core/mythtv/stable-30/git_src/git_hash_web b/abs/core/mythtv/stable-30/git_src/git_hash_web
new file mode 100644
index 0000000..b192069
--- /dev/null
+++ b/abs/core/mythtv/stable-30/git_src/git_hash_web
@@ -0,0 +1 @@
+8dc8a715aae7db7bbc3b857a337a4761af8341f7
diff --git a/abs/core/mythtv/stable-30/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch b/abs/core/mythtv/stable-30/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch
new file mode 100644
index 0000000..5c0f623
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch
@@ -0,0 +1,50 @@
+From e7c80f43a3ec0fc2024f64e17d13461840429029 Mon Sep 17 00:00:00 2001
+From: Lawrence Rust <lvr@softsystem.co.uk>
+Date: Fri, 17 Jun 2016 18:40:37 +0100
+Subject: [PATCH 336/348] MythMusic: Fix Playlist::copyTracks and
+ removeAllTracks
+
+Correct these 2 functions to call gPlayer->activePlaylistChanged
+
+Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
+---
+ mythplugins/mythmusic/mythmusic/playlist.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/mythplugins/mythmusic/mythmusic/playlist.cpp b/mythplugins/mythmusic/mythmusic/playlist.cpp
+index 79a509a..94146a4 100644
+--- a/mythplugins/mythmusic/mythmusic/playlist.cpp
++++ src/mythplugins/mythmusic/mythmusic/playlist.cpp
+@@ -46,7 +46,7 @@ bool Playlist::checkTrack(MusicMetadata::IdType trackID) const
+
+ void Playlist::copyTracks(Playlist *to_ptr, bool update_display)
+ {
+- disableSaves();
++ to_ptr->disableSaves();
+
+ for (int x = 0; x < m_songs.size(); x++)
+ {
+@@ -58,9 +58,9 @@ void Playlist::copyTracks(Playlist *to_ptr, bool update_display)
+ }
+ }
+
+- enableSaves();
++ to_ptr->enableSaves();
+
+- changed();
++ to_ptr->changed();
+ }
+
+ /// Given a tracks ID, add that track to this playlist
+@@ -94,6 +94,8 @@ void Playlist::removeAllTracks(void)
+ m_shuffledSongs.clear();
+
+ changed();
++
++ gPlayer->activePlaylistChanged(-1, true);
+ }
+
+ void Playlist::removeAllCDTracks(void)
+--
+1.7.9.5
+
diff --git a/abs/core/mythtv/stable-30/mythplugins/PKGBUILD b/abs/core/mythtv/stable-30/mythplugins/PKGBUILD
new file mode 100644
index 0000000..7828a2c
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/PKGBUILD
@@ -0,0 +1,139 @@
+pkgbase=mythplugins
+pkgname=('mytharchive'
+ 'mythbrowser'
+ 'mythgallery'
+ 'mythgame'
+ 'mythmusic'
+ 'mythnetvision'
+ 'mythnews'
+ 'mythweather'
+ 'mythzoneminder')
+pkgver=30.0
+pkgrel=5
+arch=('x86_64')
+url="http://www.mythtv.org"
+license=('GPL')
+makedepends=('cdrkit' 'dcraw' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' 'flac' 'libexif'
+ 'libvorbis' 'mesa' 'libgl' 'mplayer' "mythtv>=${pkgver}"
+ 'perl-datetime-format-iso8601' 'perl-date-manip' 'perl-image-size'
+ 'perl-json' 'perl-libwww' 'perl-soap-lite' 'perl-xml-sax'
+ 'perl-xml-simple' 'perl-xml-xpath' 'python2-oauth' 'python2-pillow'
+ 'python2-pycurl' 'qt5-tools' 'zlib')
+source=('mythburn.py-aspectratio.patch'
+ 'mythburn.cpp-python2.patch'
+ '0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch'
+ 'mythmusic_en_us.ts_Title_Case.patch'
+ )
+
+prepare() {
+ if [ -e ${srcdir}/mythplugins ]
+ then
+ msg "Removing old mythplugins src"
+ rm -rf ${srcdir}/mythplugins
+ fi
+
+ cd ${startdir}
+ msg "Copying in mythplugins git_src"
+ cp -rp ../git_src/mythtv/mythplugins $srcdir
+
+ msg "Patch MythMusic Playlist"
+ cd ${srcdir}
+ patch -Np1 -i "$srcdir/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch"
+
+ msg "Change python to python2"
+ find . -name '*.py' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+ patch -Np1 -i "$srcdir/mythburn.cpp-python2.patch"
+
+ msg "Patch and update MythMusic translations"
+ patch -Np1 -i "$srcdir/mythmusic_en_us.ts_Title_Case.patch"
+ cd ${srcdir}/$pkgbase/mythmusic/i18n
+ lrelease -removeidentical mythmusic_en_us.ts
+}
+
+build() {
+ cd ${srcdir}/${pkgbase}
+ msg "Configuring mythplugins"
+ ./configure --prefix=/usr \
+ --enable-all \
+ --python=python2
+
+ msg "Compiling mythplugins"
+ qmake-qt5 mythplugins.pro || return 1
+ make || return 1
+}
+
+package_mytharchive() {
+ pkgdesc="Create DVDs or archive recorded shows in MythTV"
+ depends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' "mythtv>=${pkgver}"
+ 'm2vrequantiser' 'mjpegtools' 'python2-pillow')
+ optdepends=('projectx: for subtitle support')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
+ patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py-aspectratio.patch || return 1
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythbrowser() {
+ pkgdesc="Mini web browser for MythTV"
+ depends=("mythtv>=${pkgver}")
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythbrowser"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgallery() {
+ pkgdesc="Image gallery plugin for MythTV"
+ depends=('libexif' "mythtv>=${pkgver}" 'dcraw')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythgallery"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgame() {
+ pkgdesc="Game emulator plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'zlib')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythgame"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythmusic() {
+ pkgdesc="Music playing plugin for MythTV"
+ depends=('cdparanoia' 'fftw' 'flac' 'libcdaudio' 'libcdio-paranoia'
+ 'libvisual-plugins' 'libvorbis' "mythtv>=${pkgver}" 'taglib')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythmusic"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnetvision() {
+ pkgdesc="MythNetvision plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'python2-pycurl' 'python2-oauth'
+ 'python2-lxml' 'python2')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythnetvision"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnews() {
+ pkgdesc="News checking plugin for MythTV"
+ depends=("mythtv>=${pkgver}")
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythnews"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythweather() {
+ pkgdesc="Weather checking plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'perl-date-manip' 'perl-json' 'perl-soap-lite'
+ 'perl-xml-sax' 'perl-xml-simple' 'perl-xml-xpath' 'perl-image-size'
+ 'perl-datetime-format-iso8601')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythweather"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythzoneminder() {
+ pkgdesc="View CCTV footage from zoneminder in MythTV"
+ depends=("mythtv>=${pkgver}")
+# install=mythplugins-mythzoneminder.install
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythzoneminder"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+md5sums=('e98c2a09bcb051fdde959fb4bb2e5ab2'
+ 'b9edd8f7da64ffa74baa91092bd48cc9'
+ '0299d0214c0d3a452c0284352435d698'
+ 'df4b92d6886db1fdd59fc02dbe33df60')
diff --git a/abs/core/mythtv/stable-30/mythplugins/mythburn.cpp-python2.patch b/abs/core/mythtv/stable-30/mythplugins/mythburn.cpp-python2.patch
new file mode 100644
index 0000000..2c43f9e
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/mythburn.cpp-python2.patch
@@ -0,0 +1,13 @@
+diff --git a/mythplugins/mytharchive/mytharchive/mythburn.cpp b/mythplugins/mytharchive/mytharchive/mythburn.cpp
+index 4188579bb0..639f17abe9 100644
+--- a/mythplugins/mytharchive/mytharchive/mythburn.cpp
++++ b/mythplugins/mytharchive/mytharchive/mythburn.cpp
+@@ -950,7 +950,7 @@ void MythBurn::runScript()
+ QFile::remove(logDir + "/mythburncancel.lck");
+
+ createConfigFile(configDir + "/mydata.xml");
+- commandline = "python " + GetShareDir() + "mytharchive/scripts/mythburn.py";
++ commandline = "python2 " + GetShareDir() + "mytharchive/scripts/mythburn.py";
+ commandline += " -j " + configDir + "/mydata.xml"; // job file
+ commandline += " -l " + logDir + "/progress.log"; // progress log
+ commandline += " > " + logDir + "/mythburn.log 2>&1 &"; // Logs
diff --git a/abs/core/mythtv/stable-30/mythplugins/mythburn.py-aspectratio.patch b/abs/core/mythtv/stable-30/mythplugins/mythburn.py-aspectratio.patch
new file mode 100644
index 0000000..377de95
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/mythburn.py-aspectratio.patch
@@ -0,0 +1,138 @@
+--- mythburn.py.orig 2013-12-16 22:41:31.532703825 +0000
++++ mythburn.py 2013-12-16 22:40:52.191109409 +0000
+@@ -98,6 +98,7 @@
+ from fcntl import ioctl
+ import CDROM
+ from shutil import copy
++from subprocess import Popen, PIPE
+
+ import MythTV
+ from MythTV import datetime
+@@ -440,7 +441,7 @@
+ os.remove(os.path.join(root, name))
+
+ #############################################################
+-# Romoves all the objects from a directory
++# Removes all the objects from a directory
+
+ def deleteEverythingInFolder(folder):
+ for root, dirs, files in os.walk(folder, topdown=False):
+@@ -666,14 +667,14 @@
+ # Gets the aspect ratio of a video file from its stream info file
+
+ def getAspectRatioOfVideo(index):
+- """Returns the aspect ratio of the video file (1.333, 1.778, etc)"""
++ """Returns the aspect ratio of the original video file (1.333, 1.778, etc)"""
+
+ #open the XML containing information about this file
+- infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++ infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+
+ #error out if its the wrong XML
+ if infoDOM.documentElement.tagName != "file":
+- fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++ fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+ video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
+ if video.attributes["aspectratio"].value != 'N/A':
+ aspect_ratio = float(video.attributes["aspectratio"].value)
+@@ -1695,6 +1696,37 @@
+ fatalError("Failed while running mytharchivehelper to get stream information.\n"
+ "Result: %d, Command was %s" % (result, command))
+
++ #open the XML containing information about this file
++ infoDOM = xml.dom.minidom.parse(xmlFilename)
++
++ #error out if its the wrong XML
++ if infoDOM.documentElement.tagName != "file":
++ fatalError("This info file doesn't look right (%s)." % xmlFilename)
++
++ file = infoDOM.getElementsByTagName("file")[0]
++ video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
++
++ #use ffmpeg to get display aspect ratio (DAR) of video
++ cmd = "mythffmpeg -i " + quoteCmdArg(file.attributes["filename"].value) + " 2>&1"
++ aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
++ if "DAR" in aspect_ratio:
++ #clean DAR string
++ aspect_ratio = aspect_ratio.split("DAR ")[-1].split(",")[0]
++ aspect_ratio = ''.join([c for c in aspect_ratio if c in '1234567890:']).split(":")
++ else:
++ #calculate aspect from video size
++ aspect_ratio = getVideoSize(xmlFilename)
++
++ #convert to decimal+
++ aspect_ratio = float(aspect_ratio[0]) / float(aspect_ratio[1])
++
++ write("Video %s aspect ratio is: %s" % (filename, aspect_ratio))
++
++ #set aspect ratio
++ video.setAttribute("aspectratio",str(aspect_ratio))
++
++ WriteXMLToFile (infoDOM,xmlFilename)
++
+ # print out the streaminfo.xml file to the log
+ infoDOM = xml.dom.minidom.parse(xmlFilename)
+ write(xmlFilename + ":-\n" + infoDOM.toprettyxml(" ", ""), False)
+@@ -2010,7 +2042,7 @@
+ #############################################################
+ # Re-encodes a file to mpeg2
+
+-def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile):
++def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile):
+ """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use mythffmpeg"""
+
+ profileNode = findEncodingProfile(profile)
+@@ -2035,6 +2067,35 @@
+ value = quoteCmdArg(destvideofile)
+ if value == "%aspect":
+ value = aspectratio
++ if value == "720x480" or value == "720x576":
++ videores, fps, videoAR = getVideoParams(folder)
++ videoWidth = int(videores.split("x")[0])
++ videoHeight = int(videores.split("x")[1])
++
++ #add padding to correct for aspects > than 1.9:1
++ if float(videoAR) >= 1.9:
++ #check which video type and set the correct height
++ if videomode == "ntsc":
++ videoModeHeight = 480
++ else:
++ videoModeHeight = 576
++
++ #calculate the video height based on the aspect ratio of the video
++ #multiply by 1.185 to compensate for dvds non-square pixels
++ calVideoHeight = int(round((720 / float(videoAR)) * 1.185))
++ if calVideoHeight % 2 == 1:
++ calVideoHeight = calVideoHeight + 1
++ #write("calVideoHeight: %s" % calVideoHeight)
++
++ #use original video height if the calculated video height is close
++ if (calVideoHeight + 20 < videoHeight) or (calVideoHeight - 20 > videoHeight):
++ videoHeight = calVideoHeight
++
++ cropPixels = videoModeHeight - videoHeight
++
++ write("Crop Pixels Total: %s" % cropPixels)
++ name = "-vf"
++ value = "\"scale=720:%d, setsar=1:1, pad=720:%d:0:%d:black\"" % (videoModeHeight - cropPixels, videoModeHeight, cropPixels / 2)
+
+ # only re-encode the audio if it is not already in AC3 format
+ if audio1[AUDIO_CODEC] == "AC3":
+@@ -4608,7 +4669,7 @@
+
+ #do the re-encode
+ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+- audio1, audio2, aspectratio, profile)
++ folder, audio1, audio2, aspectratio, profile)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+
+ #remove the old mediafile that was run through mythtranscode
+@@ -4762,7 +4823,7 @@
+
+ #do the re-encode
+ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+- audio1, audio2, aspectratio, profile)
++ folder, audio1, audio2, aspectratio, profile)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+
+ #remove an intermediate file
diff --git a/abs/core/mythtv/stable-30/mythplugins/mythmusic_en_us.ts_Title_Case.patch b/abs/core/mythtv/stable-30/mythplugins/mythmusic_en_us.ts_Title_Case.patch
new file mode 100644
index 0000000..e97cbdf
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/mythmusic_en_us.ts_Title_Case.patch
@@ -0,0 +1,2895 @@
+--- src/mythplugins/mythmusic/i18n/mythmusic_en_us.ts.orig 2019-02-27 18:13:10.875044646 +0000
++++ src/mythplugins/mythmusic/i18n/mythmusic_en_us.ts 2019-02-27 18:11:15.120068810 +0000
+@@ -6,7 +6,7 @@
+ <message>
+ <location filename="../mythmusic/musicdata.cpp" line="114"/>
+ <source>Loading Music. Please wait ...</source>
+- <translation>Loading Music. Please wait ...</translation>
++ <translation>Loading Music...</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/main.cpp" line="92"/>
+@@ -28,20 +28,20 @@
+ <message>
+ <location filename="../mythmusic/main.cpp" line="221"/>
+ <source>MythMusic hasn&apos;t been built with libcdio support so ripping CDs is not possible</source>
+- <translation>MythMusic hasn&apos;t been built with libcdio support so ripping CDs is not possible</translation>
++ <translation>MythMusic hasn&apos;t been built with libcdio support so ripping CDs is not possible.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="549"/>
++ <location filename="../mythmusic/main.cpp" line="546"/>
+ <source>Searching for music files...</source>
+- <translation>Searching for music files...</translation>
++ <translation>Searching for Music Files...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="572"/>
++ <location filename="../mythmusic/main.cpp" line="569"/>
+ <source>Loading music tracks</source>
+- <translation>Loading music tracks</translation>
++ <translation>Loading Music Tracks...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="731"/>
++ <location filename="../mythmusic/main.cpp" line="728"/>
+ <source>Unknown</source>
+ <translation>Unknown</translation>
+ </message>
+@@ -49,7 +49,7 @@
+ <context>
+ <name>AlbumArt</name>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="1549"/>
++ <location filename="../mythmusic/visualize.cpp" line="1512"/>
+ <source>?</source>
+ <translation>?</translation>
+ </message>
+@@ -57,7 +57,7 @@
+ <context>
+ <name>CDRipperThread</name>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="272"/>
++ <location filename="../mythmusic/cdrip.cpp" line="268"/>
+ <source>Importing %1</source>
+ <translation>Importing %1</translation>
+ </message>
+@@ -86,27 +86,27 @@
+ <context>
+ <name>CriteriaRowEditor</name>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1590"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1580"/>
+ <source>Select an Artist</source>
+ <translation>Select an Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1595"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1585"/>
+ <source>Select a Compilation Artist</source>
+ <translation>Select a Compilation Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1600"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1590"/>
+ <source>Select an Album</source>
+ <translation>Select an Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1605"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1595"/>
+ <source>Select a Genre</source>
+ <translation>Select a Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1610"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1600"/>
+ <source>Select a Title</source>
+ <translation>Select a Title</translation>
+ </message>
+@@ -116,224 +116,224 @@
+ <message>
+ <location filename="../mythmusic/decoderhandler.cpp" line="314"/>
+ <source>Retrieving playlist</source>
+- <translation>Retrieving playlist</translation>
++ <translation>Retrieving Playlist...</translation>
+ </message>
+ </context>
+ <context>
+ <name>EditAlbumartDialog</name>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1036"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1097"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1192"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1029"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1090"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1185"/>
+ <source>Change Image Type</source>
+ <translation>Change Image Type</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1038"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1031"/>
+ <source>What image type do you want to use for this image?</source>
+ <translation>What image type do you want to use for this image?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1073"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1066"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1087"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1186"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1080"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1179"/>
+ <source>Edit Metadata</source>
+ <translation>Edit Metadata</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1088"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1188"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1081"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1181"/>
+ <source>Rescan For Images</source>
+- <translation>Rescan For Images</translation>
++ <translation>Rescan for Images</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1091"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1190"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1084"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1183"/>
+ <source>Search Internet For Images</source>
+- <translation>Search Internet For Images</translation>
++ <translation>Search Internet for Images</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1110"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1194"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1103"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1187"/>
+ <source>Copy Selected Image To Tag</source>
+- <translation>Copy Selected Image To Tag</translation>
++ <translation>Copy Selected Image to Tag</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1115"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1196"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1108"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1189"/>
+ <source>Remove Selected Image From Tag</source>
+- <translation>Remove Selected Image From Tag</translation>
++ <translation>Remove Selected Image from Tag</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1125"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="1198"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1118"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1191"/>
+ <source>Copy Image To Tag</source>
+- <translation>Copy Image To Tag</translation>
++ <translation>Copy Image to Tag</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1304"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1297"/>
+ <source>Are you sure you want to permanently remove this image from the tag?</source>
+ <translation>Are you sure you want to permanently remove this image from the tag?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="1357"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="1350"/>
+ <source>Copying image to tag...</source>
+- <translation>Copying image to tag...</translation>
++ <translation>Copying Image to Tag...</translation>
+ </message>
+ </context>
+ <context>
+ <name>EditLyricsDialog</name>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="688"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="681"/>
+ <source>Save changes?</source>
+- <translation>Save changes?</translation>
++ <translation>Save Changes?</translation>
+ </message>
+ </context>
+ <context>
+ <name>EditMetadataCommon</name>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="171"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="168"/>
+ <source>Save Changes?</source>
+ <translation>Save Changes?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="186"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="188"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="183"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="185"/>
+ <source>Save Changes</source>
+ <translation>Save Changes</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="190"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="187"/>
+ <source>Exit/Do Not Save</source>
+- <translation>Exit/Do Not Save</translation>
++ <translation>Do Not Save</translation>
+ </message>
+ </context>
+ <context>
+ <name>EditMetadataDialog</name>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="505"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="501"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="519"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="783"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="515"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="779"/>
+ <source>Edit Albumart Images</source>
+- <translation>Edit Albumart Images</translation>
++ <translation>Edit Album Art Images</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="520"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="790"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="516"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="786"/>
+ <source>Search Internet For Artist Image</source>
+- <translation>Search Internet For Artist Image</translation>
++ <translation>Search Internet for Artist Image</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="521"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="795"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="517"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="791"/>
+ <source>Search Internet For Album Image</source>
+- <translation>Search Internet For Album Image</translation>
++ <translation>Search Internet for Album Image</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="522"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="785"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="518"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="781"/>
+ <source>Search Internet For Genre Image</source>
+- <translation>Search Internet For Genre Image</translation>
++ <translation>Search Internet for Genre Image</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="523"/>
+- <location filename="../mythmusic/editmetadata.cpp" line="800"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="519"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="796"/>
+ <source>Check Track Length</source>
+ <translation>Check Track Length</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="558"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="554"/>
+ <source>Various Artists</source>
+ <translation>Various Artists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="565"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="561"/>
+ <source>Select an Artist</source>
+ <translation>Select an Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="610"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="606"/>
+ <source>Select a Compilation Artist</source>
+ <translation>Select a Compilation Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="635"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="631"/>
+ <source>Select an Album</source>
+ <translation>Select an Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="678"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="674"/>
+ <source>Select a Genre</source>
+ <translation>Select a Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/editmetadata.cpp" line="810"/>
++ <location filename="../mythmusic/editmetadata.cpp" line="806"/>
+ <source>Asked the backend to check the tracks length</source>
+- <translation>Asked the backend to check the tracks length</translation>
++ <translation>Asked the backend to check the length of the track.</translation>
+ </message>
+ </context>
+ <context>
+ <name>GeneralSettings</name>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="77"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="72"/>
+ <source>Audio Device used for playback. &apos;default&apos; will use the device specified in MythTV</source>
+- <translation>Audio Device used for playback. &apos;default&apos; will use the device specified in MythTV</translation>
++ <translation>Audio Device used for playback. &apos;default&apos; will use the device specified in MythTV.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="79"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="74"/>
+ <source>MythTV can upconvert stereo tracks to 5.1 audio. Set this option to enable it by default. You can enable or disable the upconversion during playback at anytime.</source>
+- <translation>MythTV can upconvert stereo tracks to 5.1 audio. Set this option to enable it by default. You can enable or disable the upconversion during playback at anytime.</translation>
++ <translation>MythTV can upconvert stereo tracks to 5.1 audio. Set this option to enable it by default. You can enable or disable the upconversion during playback.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="83"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="78"/>
+ <source>CD-ROM device used for ripping/playback.</source>
+ <translation>CD-ROM device used for ripping/playback.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="84"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="79"/>
+ <source>Directory and filename format used to grab information if no ID3 information is found. Accepts GENRE, ARTIST, ALBUM, TITLE, ARTIST_TITLE and TRACK_TITLE.</source>
+ <translation>Directory and filename format used to grab information if no ID3 information is found. Accepts GENRE, ARTIST, ALBUM, TITLE, ARTIST_TITLE and TRACK_TITLE.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="88"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="83"/>
+ <source>If set, MythMusic will skip checking ID3 tags in files and just try to determine Genre, Artist, Album, and Track number and title from the filename.</source>
+ <translation>If set, MythMusic will skip checking ID3 tags in files and just try to determine Genre, Artist, Album, and Track number and title from the filename.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="92"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="87"/>
+ <source>If set, MythMusic will be allowed to update the metadata in the file (e.g. ID3) to match the database. This means allowing MythTV to write to the file and permissions must be set accordingly. Features such as ID3 playcounts and ratings depend on this being enabled.</source>
+ <translation>If set, MythMusic will be allowed to update the metadata in the file (e.g. ID3) to match the database. This means allowing MythTV to write to the file and permissions must be set accordingly. Features such as ID3 playcounts and ratings depend on this being enabled.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="99"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="94"/>
+ <source>This will clear all the MythMusic database tables allowing for a fresh start. NOTE: You may lose any manual or automatic changes made to a tracks metadata like rating or playcount unless you told MythMusic to write those to the tag.</source>
+ <translation>This will clear all the MythMusic database tables allowing for a fresh start. NOTE: You may lose any manual or automatic changes made to a tracks metadata like rating or playcount unless you told MythMusic to write those to the tag.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="103"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="98"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="104"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="99"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="115"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="110"/>
+ <source>Are you sure you want to reset the music database?</source>
+ <translation>Are you sure you want to reset the music database?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/generalsettings.cpp" line="161"/>
++ <location filename="../mythmusic/generalsettings.cpp" line="156"/>
+ <source>Music database has been cleared.
+ You must now scan, rip or import some tracks.</source>
+ <translation>Music database has been cleared.
+@@ -343,56 +343,56 @@
+ <context>
+ <name>ImportCoverArtDialog</name>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1035"/>
+- <location filename="../mythmusic/importmusic.cpp" line="1230"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1028"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1223"/>
+ <source>Front Cover</source>
+ <translation>Front Cover</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1037"/>
+- <location filename="../mythmusic/importmusic.cpp" line="1232"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1030"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1225"/>
+ <source>Back Cover</source>
+ <translation>Back Cover</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1039"/>
+- <location filename="../mythmusic/importmusic.cpp" line="1236"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1032"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1229"/>
+ <source>CD</source>
+ <translation>CD</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1041"/>
+- <location filename="../mythmusic/importmusic.cpp" line="1234"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1034"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1227"/>
+ <source>Inlay</source>
+ <translation>Inlay</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1043"/>
+- <location filename="../mythmusic/importmusic.cpp" line="1238"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1036"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1231"/>
+ <source>&lt;Unknown&gt;</source>
+ <translation>&lt;Unknown&gt;</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1081"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1074"/>
+ <source>Copy CoverArt Failed.
+ Copying to %1</source>
+ <extracomment>%1 is the filename</extracomment>
+- <translation>Copy CoverArt Failed.
++ <translation>Copying Cover Art Failed
+ Copying to %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1163"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1156"/>
+ <source>%1 of %2</source>
+ <comment>Current file copied</comment>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1205"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1198"/>
+ <source>File Already Exists</source>
+ <translation>File Already Exists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="1207"/>
++ <location filename="../mythmusic/importmusic.cpp" line="1200"/>
+ <source>New File</source>
+ <translation>New File</translation>
+ </message>
+@@ -419,89 +419,89 @@
+ <message>
+ <location filename="../mythmusic/importmusic.cpp" line="156"/>
+ <source>Not found</source>
+- <translation>Not found</translation>
++ <translation>Not Found</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="219"/>
++ <location filename="../mythmusic/importmusic.cpp" line="218"/>
+ <source>You might have unsaved changes.
+ Are you sure you want to exit this screen?</source>
+ <translation>You might have unsaved changes.
+ Are you sure you want to exit this screen?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="424"/>
++ <location filename="../mythmusic/importmusic.cpp" line="423"/>
+ <source>Copy Failed
+ Could not copy file to: %1</source>
+ <translation>Copy Failed
+ Could not copy file to: %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="448"/>
++ <location filename="../mythmusic/importmusic.cpp" line="447"/>
+ <source>This track is already in the database</source>
+- <translation>This track is already in the database</translation>
++ <translation>This track is already in the database.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="477"/>
++ <location filename="../mythmusic/importmusic.cpp" line="476"/>
+ <source>%1 new tracks were added to the database</source>
+- <translation>%1 new tracks were added to the database</translation>
++ <translation>%1 new tracks were added to the database.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="505"/>
++ <location filename="../mythmusic/importmusic.cpp" line="504"/>
+ <source>Copying music file to the &apos;Music&apos; storage group on %1</source>
+- <translation>Copying music file to the &apos;Music&apos; storage group on %1</translation>
++ <translation>Copying Music File to the &apos;Music&apos; Storage Group on %1...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="547"/>
++ <location filename="../mythmusic/importmusic.cpp" line="546"/>
+ <source>Searching for music files</source>
+- <translation>Searching for music files</translation>
++ <translation>Searching for Music Files...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="682"/>
++ <location filename="../mythmusic/importmusic.cpp" line="681"/>
+ <source>Select Where To Save Tracks</source>
+- <translation>Select Where To Save Tracks</translation>
++ <translation>Select Where to Save Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="683"/>
++ <location filename="../mythmusic/importmusic.cpp" line="682"/>
+ <source>Save Defaults</source>
+ <translation>Save Defaults</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="687"/>
++ <location filename="../mythmusic/importmusic.cpp" line="686"/>
+ <source>Change Compilation Flag</source>
+ <translation>Change Compilation Flag</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="688"/>
++ <location filename="../mythmusic/importmusic.cpp" line="687"/>
+ <source>Change Compilation Artist</source>
+ <translation>Change Compilation Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="690"/>
++ <location filename="../mythmusic/importmusic.cpp" line="689"/>
+ <source>Change Artist</source>
+ <translation>Change Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="691"/>
++ <location filename="../mythmusic/importmusic.cpp" line="690"/>
+ <source>Change Album</source>
+ <translation>Change Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="692"/>
++ <location filename="../mythmusic/importmusic.cpp" line="691"/>
+ <source>Change Genre</source>
+ <translation>Change Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="693"/>
++ <location filename="../mythmusic/importmusic.cpp" line="692"/>
+ <source>Change Year</source>
+ <translation>Change Year</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="694"/>
++ <location filename="../mythmusic/importmusic.cpp" line="693"/>
+ <source>Change Rating</source>
+ <translation>Change Rating</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importmusic.cpp" line="723"/>
++ <location filename="../mythmusic/importmusic.cpp" line="722"/>
+ <source>Select where to save tracks</source>
+ <translation>Select where to save tracks</translation>
+ </message>
+@@ -509,162 +509,162 @@
+ <context>
+ <name>ImportSettings</name>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="54"/>
++ <location filename="../mythmusic/importsettings.cpp" line="49"/>
+ <source>Full</source>
+ <translation>Full</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="55"/>
++ <location filename="../mythmusic/importsettings.cpp" line="50"/>
+ <source>Faster</source>
+ <translation>Faster</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="70"/>
++ <location filename="../mythmusic/importsettings.cpp" line="65"/>
+ <source>Ogg Vorbis</source>
+ <translation>Ogg Vorbis</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="71"/>
++ <location filename="../mythmusic/importsettings.cpp" line="66"/>
+ <source>Lame (MP3)</source>
+ <translation>Lame (MP3)</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="74"/>
++ <location filename="../mythmusic/importsettings.cpp" line="69"/>
+ <source>Low</source>
+ <translation>Low</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="75"/>
++ <location filename="../mythmusic/importsettings.cpp" line="70"/>
+ <source>Medium</source>
+ <translation>Medium</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="76"/>
++ <location filename="../mythmusic/importsettings.cpp" line="71"/>
+ <source>High</source>
+ <translation>High</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="77"/>
++ <location filename="../mythmusic/importsettings.cpp" line="72"/>
+ <source>Perfect</source>
+ <translation>Perfect</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="87"/>
++ <location filename="../mythmusic/importsettings.cpp" line="82"/>
+ <source>Paranoia level of the CD ripper. Set to faster if you&apos;re not concerned about possible errors in the audio.</source>
+ <translation>Paranoia level of the CD ripper. Set to faster if you&apos;re not concerned about possible errors in the audio.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="90"/>
++ <location filename="../mythmusic/importsettings.cpp" line="85"/>
+ <source>Defines the location/name for new songs. Valid tokens are:
+ GENRE, ARTIST, ALBUM, TRACK, TITLE, YEAR</source>
+ <translation>Defines the location/name for new songs. Valid tokens are:
+ GENRE, ARTIST, ALBUM, TRACK, TITLE, YEAR</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="93"/>
++ <location filename="../mythmusic/importsettings.cpp" line="88"/>
+ <source>If set, whitespace characters in filenames will be replaced with underscore characters.</source>
+ <translation>If set, whitespace characters in filenames will be replaced with underscore characters.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="95"/>
++ <location filename="../mythmusic/importsettings.cpp" line="90"/>
+ <source>If present this script will be executed after a CD Rip is completed.</source>
+ <translation>If present this script will be executed after a CD Rip is completed.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="97"/>
++ <location filename="../mythmusic/importsettings.cpp" line="92"/>
+ <source>If set, the CD tray will automatically open after the CD has been ripped.</source>
+ <translation>If set, the CD tray will automatically open after the CD has been ripped.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="99"/>
++ <location filename="../mythmusic/importsettings.cpp" line="94"/>
+ <source>Audio encoder to use for CD ripping. Note that the quality level &apos;Perfect&apos; will use the FLAC encoder.</source>
+ <translation>Audio encoder to use for CD ripping. Note that the quality level &apos;Perfect&apos; will use the FLAC encoder.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="102"/>
++ <location filename="../mythmusic/importsettings.cpp" line="97"/>
+ <source>Default quality for new CD rips.</source>
+ <translation>Default quality for new CD rips.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="103"/>
++ <location filename="../mythmusic/importsettings.cpp" line="98"/>
+ <source>If set, the MP3 encoder will use variable bitrates (VBR) except for the low quality setting. The Ogg encoder will always use variable bitrates.</source>
+ <translation>If set, the MP3 encoder will use variable bitrates (VBR) except for the low quality setting. The Ogg encoder will always use variable bitrates.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="106"/>
++ <location filename="../mythmusic/importsettings.cpp" line="101"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/importsettings.cpp" line="107"/>
++ <location filename="../mythmusic/importsettings.cpp" line="102"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ </context>
+ <context>
+ <name>LyricsView</name>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="156"/>
+- <location filename="../mythmusic/lyricsview.cpp" line="246"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="155"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="245"/>
+ <source>Save Lyrics</source>
+ <translation>Save Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="160"/>
+- <location filename="../mythmusic/lyricsview.cpp" line="241"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="159"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="240"/>
+ <source>Edit Lyrics</source>
+ <translation>Edit Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="164"/>
+- <location filename="../mythmusic/lyricsview.cpp" line="243"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="163"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="242"/>
+ <source>Add Lyrics</source>
+ <translation>Add Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="168"/>
+- <location filename="../mythmusic/lyricsview.cpp" line="250"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="167"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="249"/>
+ <source>Auto Scroll Lyrics</source>
+ <translation>Auto Scroll Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="230"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="229"/>
+ <source>Actions</source>
+ <translation>Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="236"/>
+- <location filename="../mythmusic/lyricsview.cpp" line="267"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="235"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="266"/>
+ <source>Find Lyrics</source>
+ <translation>Find Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="253"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="252"/>
+ <source>Other Options</source>
+ <translation>Other Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="270"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="269"/>
+ <source>Search All Grabbers</source>
+ <translation>Search All Grabbers</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="276"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="275"/>
+ <source>Search %1</source>
+ <translation>Search %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="459"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="455"/>
+ <source>Syncronized</source>
+ <translation>Syncronized</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="459"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="455"/>
+ <source>Unsyncronized</source>
+ <translation>Unsyncronized</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/lyricsview.cpp" line="460"/>
++ <location filename="../mythmusic/lyricsview.cpp" line="456"/>
+ <source>** Lyrics from %1 (%2) **</source>
+ <translation>** Lyrics from %1 (%2) **</translation>
+ </message>
+@@ -672,225 +672,231 @@
+ <context>
+ <name>MusicCommon</name>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1215"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1217"/>
+ <source>Playing stream.</source>
+- <translation>Playing stream.</translation>
++ <translation>Playing Stream.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1244"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1246"/>
+ <source>Buffering stream.</source>
+- <translation>Buffering stream.</translation>
++ <translation>Buffering Stream.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1248"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1250"/>
+ <source>Stream paused.</source>
+- <translation>Stream paused.</translation>
++ <translation>Stream Paused.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1316"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1319"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1323"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1331"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1316"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="1322"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1319"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1323"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1331"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1335"/>
+ <source>kHz</source>
+ <translation>kHz</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1316"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="1322"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1319"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1323"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1331"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1335"/>
+ <source>ch</source>
+ <translation>ch</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1340"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1354"/>
+ <source>Stream stopped.</source>
+- <translation>Stream stopped.</translation>
++ <translation>Stream Stopped.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1377"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2229"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1391"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2243"/>
+ <source>Playlist Editor</source>
+ <translation>Playlist Editor</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1386"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2225"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1400"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2239"/>
+ <source>Switch To Gallery View</source>
+- <translation>Switch To Gallery View</translation>
++ <translation>Switch to Gallery View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1388"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2227"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1402"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2241"/>
+ <source>Switch To Tree View</source>
+- <translation>Switch To Tree View</translation>
++ <translation>Switch to Tree View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1390"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2246"/>
+- <location filename="../mythmusic/streamview.cpp" line="101"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1404"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2260"/>
++ <location filename="../mythmusic/streamview.cpp" line="93"/>
+ <source>Lyrics</source>
+ <translation>Lyrics</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1422"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2297"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1436"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2311"/>
+ <source>Save To New Playlist</source>
+- <translation>Save To New Playlist</translation>
++ <translation>Save to New Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1424"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1438"/>
+ <source>Enter new playlist name</source>
+- <translation>Enter new playlist name</translation>
++ <translation>Enter new playlist name:</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1438"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2298"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1452"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2312"/>
+ <source>Save To Existing Playlist</source>
+- <translation>Save To Existing Playlist</translation>
++ <translation>Save to Existing Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1440"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1454"/>
+ <source>Select the playlist to save to</source>
+ <translation>Select the playlist to save to</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1505"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2339"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1519"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2353"/>
+ <source>Change Volume</source>
+ <translation>Change Volume</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1507"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2340"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1521"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2354"/>
+ <source>Mute</source>
+ <translation>Mute</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1509"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2341"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1523"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2355"/>
+ <source>Previous Track</source>
+ <translation>Previous Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1511"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2342"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1525"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2356"/>
+ <source>Next Track</source>
+ <translation>Next Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1513"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2346"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1527"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2360"/>
+ <source>Jump Back</source>
+ <translation>Jump Back</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1515"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2347"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1529"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2361"/>
+ <source>Jump Forward</source>
+ <translation>Jump Forward</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1517"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2350"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1531"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2364"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1519"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2351"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1533"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2365"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1521"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2354"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1535"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2368"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1526"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2397"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1540"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2411"/>
+ <source>All Tracks</source>
+ <translation>All Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1528"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2400"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1542"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2414"/>
+ <source>From CD</source>
+ <translation>From CD</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2248"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2547"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2262"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2561"/>
+ <source>More Options</source>
+ <translation>More Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2255"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2269"/>
+ <source>Actions</source>
+ <translation>Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2139"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2153"/>
+ <source>Default Playlist</source>
+ <translation>Default Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2141"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2155"/>
+ <source>Stream Playlist</source>
+ <translation>Stream Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2265"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2283"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2279"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2297"/>
+ <source>Playlist Options</source>
+ <translation>Playlist Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2266"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2376"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2280"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2390"/>
+ <source>Set Shuffle Mode</source>
+ <translation>Set Shuffle Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2267"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2361"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2281"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2375"/>
+ <source>Set Repeat Mode</source>
+ <translation>Set Repeat Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2270"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2284"/>
+ <source>Player Options</source>
+ <translation>Player Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2273"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2393"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2287"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2407"/>
+ <source>Quick Playlists</source>
+ <translation>Quick Playlists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2276"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2290"/>
+ <source>Change Visualizer</source>
+ <translation>Change Visualizer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1384"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2240"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1398"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2254"/>
+ <source>Search for Music</source>
+ <translation>Search for Music</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1375"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2243"/>
+- <location filename="../mythmusic/streamview.cpp" line="100"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1389"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2257"/>
++ <location filename="../mythmusic/streamview.cpp" line="92"/>
+ <source>Fullscreen Visualizer</source>
+ <translation>Fullscreen Visualizer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2311"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2325"/>
+ <source>Exiting Music Player.
+
+ Do you want to continue playing in the background?</source>
+@@ -899,160 +905,160 @@
+ Do you want to continue playing in the background?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2335"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2349"/>
+ <source>Player Actions</source>
+ <translation>Player Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2365"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2380"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2379"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2394"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2366"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2380"/>
+ <source>Track</source>
+ <translation>Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2367"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2381"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2381"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2395"/>
+ <source>Random</source>
+ <translation>Random</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2382"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2396"/>
+ <source>Smart</source>
+ <translation>Smart</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2383"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2397"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2384"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2398"/>
+ <source>Artist</source>
+ <translation>Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2416"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2430"/>
+ <source>Choose Visualizer</source>
+ <translation>Choose Visualizer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2430"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2444"/>
+ <source>Add to Playlist Options</source>
+ <translation>Add to Playlist Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1395"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2261"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1409"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2275"/>
+ <source>Search List...</source>
+ <translation>Search List...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1400"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2289"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1414"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2303"/>
+ <source>Sync List With Current Track</source>
+ <translation>Sync List With Current Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1404"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2290"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1418"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2304"/>
+ <source>Remove Selected Track</source>
+ <translation>Remove Selected Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1414"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2293"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1428"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2307"/>
+ <source>Remove All Tracks</source>
+ <translation>Remove All Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1453"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2303"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1467"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2317"/>
+ <source>Switch To Move Mode</source>
+- <translation>Switch To Move Mode</translation>
++ <translation>Switch to Move Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1461"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2301"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1475"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2315"/>
+ <source>Switch To Select Mode</source>
+- <translation>Switch To Select Mode</translation>
++ <translation>Switch to Select Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1530"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2404"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1544"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2418"/>
+ <source>Tracks By Current Artist</source>
+- <translation>Tracks By Current Artist</translation>
++ <translation>Tracks by Current Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1532"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2406"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1546"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2420"/>
+ <source>Tracks From Current Genre</source>
+- <translation>Tracks From Current Genre</translation>
++ <translation>Tracks from Current Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1534"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2405"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1548"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2419"/>
+ <source>Tracks From Current Album</source>
+- <translation>Tracks From Current Album</translation>
++ <translation>Tracks from Current Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1536"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2407"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1550"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2421"/>
+ <source>Tracks From Current Year</source>
+- <translation>Tracks From Current Year</translation>
++ <translation>Tracks from Current Year</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1538"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2408"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1552"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2422"/>
+ <source>Tracks With Same Title</source>
+ <translation>Tracks With Same Title</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1543"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2434"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1557"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2448"/>
+ <source>Replace Tracks</source>
+ <translation>Replace Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1548"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2435"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1562"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2449"/>
+ <source>Add Tracks</source>
+ <translation>Add Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2130"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2144"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2220"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2234"/>
+ <source>View Actions</source>
+ <translation>View Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="2328"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2342"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1492"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2326"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1506"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2340"/>
+ <source>No - Exit, Stop Playing</source>
+- <translation>No - Exit, Stop Playing</translation>
++ <translation>Stop Playing and Exit</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/musiccommon.cpp" line="1498"/>
+- <location filename="../mythmusic/musiccommon.cpp" line="2327"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="1512"/>
++ <location filename="../mythmusic/musiccommon.cpp" line="2341"/>
+ <source>Yes - Exit, Continue Playing</source>
+- <translation>Yes - Exit, Continue Playing</translation>
++ <translation>Continue Playing and Exit</translation>
+ </message>
+ </context>
+ <context>
+@@ -1060,7 +1066,7 @@
+ <message>
+ <location filename="../mythmusic/musicdata.cpp" line="71"/>
+ <source>Rebuilding music tree</source>
+- <translation>Rebuilding music tree</translation>
++ <translation>Rebuilding Music Tree...</translation>
+ </message>
+ </context>
+ <context>
+@@ -1081,7 +1087,7 @@
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="349"/>
+ <source>Got too many track unavailable errors. Maybe the host with the music on is off-line?</source>
+- <translation>Got too many track unavailable errors. Maybe the host with the music on is off-line?</translation>
++ <translation>Too many track unavailable errors. Maybe the host with the music on is off-line?</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="357"/>
+@@ -1091,7 +1097,7 @@
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="778"/>
+ <source>A music file scan has started on %1</source>
+- <translation>A music file scan has started on %1</translation>
++ <translation>A music file scan has started on %1.</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="779"/>
+@@ -1104,24 +1110,24 @@
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="780"/>
+ <source>This may take a while I&apos;ll give a shout when finished</source>
+- <translation>This may take a while I&apos;ll give a shout when finished</translation>
++ <translation>This may take a while I&apos;ll give a shout when finished.</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="798"/>
+ <source>A music file scan has finished on %1</source>
+- <translation>A music file scan has finished on %1</translation>
++ <translation>A music file scan has finished on %1.</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="816"/>
+ <source>Can&apos;t run the music file scanner because it is already running on %1</source>
+- <translation>Can&apos;t run the music file scanner because it is already running on %1</translation>
++ <translation>Can&apos;t run the music file scanner because it is already running on %1.</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="820"/>
+ <source>The music file scanner has been running for more than 60 minutes on %1.
+ Resetting and trying again</source>
+ <translation>The music file scanner has been running for more than 60 minutes on %1.
+-Resetting and trying again</translation>
++Resetting and trying again.</translation>
+ </message>
+ <message>
+ <location filename="../mythmusic/musicplayer.cpp" line="857"/>
+@@ -1148,310 +1154,300 @@
+ <context>
+ <name>MythControls</name>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="799"/>
++ <location filename="../mythmusic/main.cpp" line="796"/>
+ <source>Play music</source>
+- <translation>Play music</translation>
++ <translation>Play Music</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="801"/>
++ <location filename="../mythmusic/main.cpp" line="798"/>
+ <source>Select music playlists</source>
+- <translation>Select music playlists</translation>
++ <translation>Select Music Playlists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="803"/>
++ <location filename="../mythmusic/main.cpp" line="800"/>
+ <source>Play radio stream</source>
+- <translation>Play radio stream</translation>
++ <translation>Play Radio Stream</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="805"/>
++ <location filename="../mythmusic/main.cpp" line="802"/>
+ <source>Rip CD</source>
+ <translation>Rip CD</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="807"/>
++ <location filename="../mythmusic/main.cpp" line="804"/>
+ <source>Scan music</source>
+- <translation>Scan music</translation>
++ <translation>Scan Music</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="809"/>
++ <location filename="../mythmusic/main.cpp" line="806"/>
+ <source>Show Music Miniplayer</source>
+ <translation>Show Music Miniplayer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="812"/>
++ <location filename="../mythmusic/main.cpp" line="809"/>
+ <source>Move to the next track</source>
+- <translation>Move to the next track</translation>
++ <translation>Move to the Next Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="814"/>
++ <location filename="../mythmusic/main.cpp" line="811"/>
+ <source>Move to the previous track</source>
+- <translation>Move to the previous track</translation>
++ <translation>Move to the Previous Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="816"/>
++ <location filename="../mythmusic/main.cpp" line="813"/>
+ <source>Fast forward</source>
+- <translation>Fast forward</translation>
++ <translation>Fast Forward</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="818"/>
++ <location filename="../mythmusic/main.cpp" line="815"/>
+ <source>Rewind</source>
+ <translation>Rewind</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="820"/>
++ <location filename="../mythmusic/main.cpp" line="817"/>
+ <source>Pause/Start playback</source>
+- <translation>Pause/Start playback</translation>
++ <translation>Pause/Start Playback</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="822"/>
++ <location filename="../mythmusic/main.cpp" line="819"/>
+ <source>Start playback</source>
+- <translation>Start playback</translation>
++ <translation>Start Playback</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="824"/>
++ <location filename="../mythmusic/main.cpp" line="821"/>
+ <source>Stop playback</source>
+- <translation>Stop playback</translation>
++ <translation>Stop Playback</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="826"/>
++ <location filename="../mythmusic/main.cpp" line="823"/>
+ <source>Volume down</source>
+- <translation>Volume down</translation>
++ <translation>Volume Down</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="828"/>
++ <location filename="../mythmusic/main.cpp" line="825"/>
+ <source>Volume up</source>
+- <translation>Volume up</translation>
++ <translation>Volume Up</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="830"/>
++ <location filename="../mythmusic/main.cpp" line="827"/>
+ <source>Mute</source>
+ <translation>Mute</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="832"/>
++ <location filename="../mythmusic/main.cpp" line="829"/>
+ <source>Toggle audio upmixer</source>
+- <translation>Toggle audio upmixer</translation>
++ <translation>Toggle Audio Upmixer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="834"/>
++ <location filename="../mythmusic/main.cpp" line="831"/>
+ <source>Cycle visualizer mode</source>
+- <translation>Cycle visualizer mode</translation>
++ <translation>Cycle Visualizer Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="836"/>
++ <location filename="../mythmusic/main.cpp" line="833"/>
+ <source>Blank screen</source>
+- <translation>Blank screen</translation>
++ <translation>Blank Screen</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="838"/>
++ <location filename="../mythmusic/main.cpp" line="835"/>
+ <source>Increase rating</source>
+- <translation>Increase rating</translation>
++ <translation>Increase Rating</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="840"/>
++ <location filename="../mythmusic/main.cpp" line="837"/>
+ <source>Decrease rating</source>
+- <translation>Decrease rating</translation>
++ <translation>Decrease Rating</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="842"/>
++ <location filename="../mythmusic/main.cpp" line="839"/>
+ <source>Refresh music tree</source>
+- <translation>Refresh music tree</translation>
++ <translation>Refresh Music Tree</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="844"/>
++ <location filename="../mythmusic/main.cpp" line="841"/>
+ <source>Increase Play Speed</source>
+ <translation>Increase Play Speed</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="846"/>
++ <location filename="../mythmusic/main.cpp" line="843"/>
+ <source>Decrease Play Speed</source>
+ <translation>Decrease Play Speed</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="848"/>
++ <location filename="../mythmusic/main.cpp" line="845"/>
+ <source>Toggle track selection</source>
+- <translation>Toggle track selection</translation>
++ <translation>Toggle Track Selection</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="850"/>
++ <location filename="../mythmusic/main.cpp" line="847"/>
+ <source>Toggle shuffle mode</source>
+- <translation>Toggle shuffle mode</translation>
++ <translation>Toggle Shuffle Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="852"/>
++ <location filename="../mythmusic/main.cpp" line="849"/>
+ <source>Toggle repeat mode</source>
+- <translation>Toggle repeat mode</translation>
++ <translation>Toggle Repeat Mode</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="854"/>
++ <location filename="../mythmusic/main.cpp" line="851"/>
+ <source>Switch to previous radio stream</source>
+- <translation>Switch to previous radio stream</translation>
++ <translation>Switch to Previous Radio Stream</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="858"/>
++ <location filename="../mythmusic/main.cpp" line="855"/>
+ <source>Switch to the current playlist view</source>
+- <translation>Switch to the current playlist view</translation>
++ <translation>Switch to the Current Playlist View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="860"/>
++ <location filename="../mythmusic/main.cpp" line="857"/>
+ <source>Switch to the playlist editor tree view</source>
+- <translation>Switch to the playlist editor tree view</translation>
++ <translation>Switch to the Playlist Editor Tree View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="862"/>
++ <location filename="../mythmusic/main.cpp" line="859"/>
+ <source>Switch to the playlist editor gallery view</source>
+- <translation>Switch to the playlist editor gallery view</translation>
++ <translation>Switch to the Playlist Editor Gallery View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="864"/>
++ <location filename="../mythmusic/main.cpp" line="861"/>
+ <source>Switch to the search view</source>
+- <translation>Switch to the search view</translation>
++ <translation>Switch to the Search View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="866"/>
++ <location filename="../mythmusic/main.cpp" line="863"/>
+ <source>Switch to the fullscreen visualiser view</source>
+- <translation>Switch to the fullscreen visualiser view</translation>
++ <translation>Switch to the Fullscreen Visualizer View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="868"/>
++ <location filename="../mythmusic/main.cpp" line="865"/>
+ <source>Switch to the radio stream view</source>
+- <translation>Switch to the radio stream view</translation>
++ <translation>Switch to the Radio Stream View</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="872"/>
++ <location filename="../mythmusic/main.cpp" line="868"/>
+ <source>MythMusic Media Handler 1/2</source>
+ <translation>MythMusic Media Handler 1/2</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/main.cpp" line="873"/>
+- <source>MythMusic audio CD</source>
+- <translation>MythMusic audio CD</translation>
+- </message>
+- <message>
+- <location filename="../mythmusic/main.cpp" line="879"/>
++ <location filename="../mythmusic/main.cpp" line="874"/>
+ <source>MythMusic Media Handler 2/2</source>
+ <translation>MythMusic Media Handler 2/2</translation>
+ </message>
+- <message>
+- <location filename="../mythmusic/main.cpp" line="880"/>
+- <source>MythMusic audio files</source>
+- <translation>MythMusic audio files</translation>
+- </message>
+ </context>
+ <context>
+ <name>PlayerSettings</name>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="53"/>
+- <location filename="../mythmusic/playersettings.cpp" line="59"/>
+- <location filename="../mythmusic/playersettings.cpp" line="65"/>
++ <location filename="../mythmusic/playersettings.cpp" line="48"/>
++ <location filename="../mythmusic/playersettings.cpp" line="54"/>
++ <location filename="../mythmusic/playersettings.cpp" line="60"/>
+ <source>Off</source>
+ <translation>Off</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="54"/>
+- <location filename="../mythmusic/playersettings.cpp" line="60"/>
++ <location filename="../mythmusic/playersettings.cpp" line="49"/>
++ <location filename="../mythmusic/playersettings.cpp" line="55"/>
+ <source>First</source>
+ <translation>First</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="55"/>
+- <location filename="../mythmusic/playersettings.cpp" line="61"/>
++ <location filename="../mythmusic/playersettings.cpp" line="50"/>
++ <location filename="../mythmusic/playersettings.cpp" line="56"/>
+ <source>Track</source>
+ <translation>Track</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="56"/>
+- <location filename="../mythmusic/playersettings.cpp" line="62"/>
++ <location filename="../mythmusic/playersettings.cpp" line="51"/>
++ <location filename="../mythmusic/playersettings.cpp" line="57"/>
+ <source>Exact</source>
+ <translation>Exact</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="66"/>
++ <location filename="../mythmusic/playersettings.cpp" line="61"/>
+ <source>On</source>
+ <translation>On</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="69"/>
++ <location filename="../mythmusic/playersettings.cpp" line="64"/>
+ <source>Prompt</source>
+ <translation>Prompt</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="70"/>
+- <location filename="../mythmusic/playersettings.cpp" line="74"/>
++ <location filename="../mythmusic/playersettings.cpp" line="65"/>
++ <location filename="../mythmusic/playersettings.cpp" line="69"/>
+ <source>Stop playing</source>
+- <translation>Stop playing</translation>
++ <translation>Stop Playing</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="71"/>
+- <location filename="../mythmusic/playersettings.cpp" line="75"/>
++ <location filename="../mythmusic/playersettings.cpp" line="66"/>
++ <location filename="../mythmusic/playersettings.cpp" line="70"/>
+ <source>Continue Playing</source>
+ <translation>Continue Playing</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="85"/>
++ <location filename="../mythmusic/playersettings.cpp" line="80"/>
+ <source>Playback screen - Resume playback at either the beginning of the active play queue, the beginning of the last track played, or an exact point within the last track played or not at all.</source>
+ <translation>Playback screen - Resume playback at either the beginning of the active play queue, the beginning of the last track played, or an exact point within the last track played or not at all.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="88"/>
++ <location filename="../mythmusic/playersettings.cpp" line="83"/>
+ <source>Playlist Editor screen - Resume playback at either the beginning of the active play queue, the beginning of the last track played, or an exact point within the last track played or not at all.</source>
+ <translation>Playlist Editor screen - Resume playback at either the beginning of the active play queue, the beginning of the last track played, or an exact point within the last track played or not at all.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="91"/>
++ <location filename="../mythmusic/playersettings.cpp" line="86"/>
+ <source>Radio screen - Resume playback at the previous station or not at all</source>
+- <translation>Radio screen - Resume playback at the previous station or not at all</translation>
++ <translation>Radio screen - Resume playback at the previous station or not at all.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="92"/>
++ <location filename="../mythmusic/playersettings.cpp" line="87"/>
+ <source>Specify what action to take when exiting MythMusic plugin.</source>
+- <translation>Specify what action to take when exiting MythMusic plugin.</translation>
++ <translation>Specify what action to take when exiting MythMusic.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="93"/>
++ <location filename="../mythmusic/playersettings.cpp" line="88"/>
+ <source>Specify what action to take when exiting MythMusic plugin due to a jumppoint being executed.</source>
+- <translation>Specify what action to take when exiting MythMusic plugin due to a jumppoint being executed.</translation>
++ <translation>Specify what action to take when exiting MythMusic due to a jumppoint being executed.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="94"/>
++ <location filename="../mythmusic/playersettings.cpp" line="89"/>
+ <source>Automatically lookup an audio CD if it is present and show its information in the Music Selection Tree.</source>
+ <translation>Automatically lookup an audio CD if it is present and show its information in the Music Selection Tree.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="97"/>
++ <location filename="../mythmusic/playersettings.cpp" line="92"/>
+ <source>Automatically put a new CD on the playlist and start playing the CD.</source>
+ <translation>Automatically put a new CD on the playlist and start playing the CD.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="99"/>
++ <location filename="../mythmusic/playersettings.cpp" line="94"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playersettings.cpp" line="100"/>
++ <location filename="../mythmusic/playersettings.cpp" line="95"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ </context>
+ <context>
+ <name>Playlist</name>
+ <message>
+- <location filename="../mythmusic/playlist.cpp" line="150"/>
++ <location filename="../mythmusic/playlist.cpp" line="149"/>
+ <source>oops</source>
+ <translation>oops</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlist.cpp" line="606"/>
++ <location filename="../mythmusic/playlist.cpp" line="623"/>
+ <source>Default Playlist</source>
+ <translation>Default Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlist.cpp" line="1336"/>
++ <location filename="../mythmusic/playlist.cpp" line="1353"/>
+ <source>Creating CD File System</source>
+ <translation>Creating CD File System</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlist.cpp" line="1385"/>
++ <location filename="../mythmusic/playlist.cpp" line="1402"/>
+ <source>Burning CD</source>
+ <translation>Burning CD</translation>
+ </message>
+@@ -1467,154 +1463,154 @@
+ <context>
+ <name>PlaylistEditorView</name>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="266"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="745"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="755"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="260"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="732"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="742"/>
+ <source>New Smart Playlist</source>
+ <translation>New Smart Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="288"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="756"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="282"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="743"/>
+ <source>Remove Smart Playlist</source>
+ <translation>Remove Smart Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="293"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="478"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="287"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="468"/>
+ <source>Are you sure you want to delete this Smart Playlist?
+ Category: %1 - Name: %2</source>
+ <translation>Are you sure you want to delete this Smart Playlist?
+ Category: %1 - Name: %2</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="297"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="754"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="291"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="741"/>
+ <source>Edit Smart Playlist</source>
+ <translation>Edit Smart Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="318"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="352"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="719"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="751"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="312"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="346"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="706"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="738"/>
+ <source>Replace Tracks</source>
+ <translation>Replace Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="324"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="358"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="720"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="752"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="318"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="352"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="707"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="739"/>
+ <source>Add Tracks</source>
+ <translation>Add Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="344"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="721"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="338"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="708"/>
+ <source>Remove Playlist</source>
+ <translation>Remove Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="348"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="487"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="342"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="477"/>
+ <source>Are you sure you want to delete this Playlist?
+ Name: %1</source>
+ <translation>Are you sure you want to delete this Playlist?
+ Name: %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="687"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="674"/>
+ <source>More Options</source>
+ <translation>More Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="718"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="705"/>
+ <source>Playlist Actions</source>
+ <translation>Playlist Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="741"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="749"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="728"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="736"/>
+ <source>Smart Playlist Actions</source>
+ <translation>Smart Playlist Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="768"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1347"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="755"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1335"/>
+ <source>All Tracks</source>
+ <translation>All Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="772"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1353"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="759"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1341"/>
+ <source>Albums</source>
+ <translation>Albums</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="776"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1360"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="763"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1348"/>
+ <source>Artists</source>
+ <translation>Artists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="780"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1408"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="767"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1396"/>
+ <source>Genres</source>
+ <translation>Genres</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="784"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1415"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="771"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1403"/>
+ <source>Tags</source>
+ <translation>Tags</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="788"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1422"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="775"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1410"/>
+ <source>Ratings</source>
+ <translation>Ratings</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="792"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1429"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="779"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1417"/>
+ <source>Years</source>
+ <translation>Years</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="796"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="783"/>
+ <source>Compilations</source>
+ <translation>Compilations</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="816"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="803"/>
+ <source>CD - %1</source>
+ <translation>CD - %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="821"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1274"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="808"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1262"/>
+ <source>Directory</source>
+ <translation>Directory</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="825"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="812"/>
+ <source>Playlists</source>
+ <translation>Playlists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="828"/>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1732"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="815"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1720"/>
+ <source>Smart Playlists</source>
+ <translation>Smart Playlists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="964"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="951"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1203"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1191"/>
+ <source>%n Star(s)</source>
+ <translatorcomment>I&apos;m not sure this about that uppercase S should really be there...</translatorcomment>
+ <translation>
+@@ -1623,17 +1619,17 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1400"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1388"/>
+ <source>Compilation Artists</source>
+ <translation>Compilation Artists</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1591"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1579"/>
+ <source>** No matching tracks **</source>
+- <translation>** No matching tracks **</translation>
++ <translation>** No Matching Tracks **</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/playlisteditorview.cpp" line="1649"/>
++ <location filename="../mythmusic/playlisteditorview.cpp" line="1637"/>
+ <source>** Empty Playlist!! **</source>
+ <translation>** Empty Playlist!! **</translation>
+ </message>
+@@ -1641,50 +1637,50 @@
+ <context>
+ <name>RatingSettings</name>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="52"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="47"/>
+ <source>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to your rating of a given track when ordering a group of songs.</source>
+ <translation>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to your rating of a given track when ordering a group of songs.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="56"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="51"/>
+ <source>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to how many times a given track has been played when ordering a group of songs.</source>
+ <translation>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to how many times a given track has been played when ordering a group of songs.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="60"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="55"/>
+ <source>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to how long it has been since a given track was played when ordering a group of songs.</source>
+ <translation>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to how long it has been since a given track was played when ordering a group of songs.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="64"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="59"/>
+ <source>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to good old (pseudo-)randomness when ordering a group of songs.</source>
+ <translation>Used in &quot;Smart&quot; Shuffle mode. This weighting affects how much strength is given to good old (pseudo-)randomness when ordering a group of songs.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="68"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="63"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/ratingsettings.cpp" line="69"/>
++ <location filename="../mythmusic/ratingsettings.cpp" line="64"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ </context>
+ <context>
+ <name>RipStatus</name>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1603"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1583"/>
+ <source>Cancel ripping the CD?</source>
+ <translation>Cancel ripping the CD?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1671"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1652"/>
+ <source>Copying Track ...</source>
+- <translation>Copying Track ...</translation>
++ <translation>Copying Track...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1700"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1681"/>
+ <source>The encoder failed to create the file.
+ Do you have write permissions for the music directory?</source>
+ <translation>The encoder failed to create the file.
+@@ -1694,194 +1690,194 @@
+ <context>
+ <name>Ripper</name>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="668"/>
++ <location filename="../mythmusic/cdrip.cpp" line="662"/>
+ <source>Low</source>
+ <translation>Low</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="669"/>
++ <location filename="../mythmusic/cdrip.cpp" line="663"/>
+ <source>Medium</source>
+ <translation>Medium</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="670"/>
++ <location filename="../mythmusic/cdrip.cpp" line="664"/>
+ <source>High</source>
+ <translation>High</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="671"/>
++ <location filename="../mythmusic/cdrip.cpp" line="665"/>
+ <source>Perfect</source>
+ <translation>Perfect</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="726"/>
++ <location filename="../mythmusic/cdrip.cpp" line="719"/>
+ <source>Select Where To Save Tracks</source>
+ <translation>Select Where To Save Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="727"/>
++ <location filename="../mythmusic/cdrip.cpp" line="720"/>
+ <source>Edit Track Metadata</source>
+ <translation>Edit Track Metadata</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="760"/>
++ <location filename="../mythmusic/cdrip.cpp" line="753"/>
+ <source>Select where to save tracks</source>
+- <translation>Select where to save tracks</translation>
++ <translation>Select Where To Save Tracks</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="790"/>
++ <location filename="../mythmusic/cdrip.cpp" line="783"/>
+ <source>Scanning CD. Please Wait ...</source>
+- <translation>Scanning CD. Please Wait ...</translation>
++ <translation>Scanning CD...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1162"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1144"/>
+ <source>There are no tracks to rip?</source>
+ <translation>There are no tracks to rip?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1190"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1172"/>
+ <source>Rip completed successfully.</source>
+ <translation>Rip completed successfully.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1205"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1187"/>
+ <source>Ejecting CD. Please Wait ...</source>
+- <translation>Ejecting CD. Please Wait ...</translation>
++ <translation>Ejecting CD...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1308"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1290"/>
+ <source>Select an Artist</source>
+ <translation>Select an Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1332"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1314"/>
+ <source>Select an Album</source>
+ <translation>Select an Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1356"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1338"/>
+ <source>Select a Genre</source>
+ <translation>Select a Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1459"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1441"/>
+ <source>This track has been disabled because it is already present in the database.
+ Do you want to permanently delete the existing file(s)?</source>
+ <translation>This track has been disabled because it is already present in the database.
+ Do you want to permanently delete the existing file(s)?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1475"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1457"/>
+ <source>No, Cancel</source>
+- <translation>No, Cancel</translation>
++ <translation>Do Not Delete</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1476"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1458"/>
+ <source>Yes, Delete</source>
+- <translation>Yes, Delete</translation>
++ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/cdrip.cpp" line="1477"/>
++ <location filename="../mythmusic/cdrip.cpp" line="1459"/>
+ <source>Yes, Delete All</source>
+- <translation>Yes, Delete All</translation>
++ <translation>Delete All</translation>
+ </message>
+ </context>
+ <context>
+ <name>SearchStream</name>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="915"/>
+- <location filename="../mythmusic/streamview.cpp" line="932"/>
+- <location filename="../mythmusic/streamview.cpp" line="1043"/>
++ <location filename="../mythmusic/streamview.cpp" line="903"/>
++ <location filename="../mythmusic/streamview.cpp" line="920"/>
++ <location filename="../mythmusic/streamview.cpp" line="1031"/>
+ <source>&lt;All Broadcasters&gt;</source>
+ <translation>&lt;All Broadcasters&gt;</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="939"/>
+- <location filename="../mythmusic/streamview.cpp" line="956"/>
+- <location filename="../mythmusic/streamview.cpp" line="1044"/>
++ <location filename="../mythmusic/streamview.cpp" line="927"/>
++ <location filename="../mythmusic/streamview.cpp" line="944"/>
++ <location filename="../mythmusic/streamview.cpp" line="1032"/>
+ <source>&lt;All Genres&gt;</source>
+ <translation>&lt;All Genres&gt;</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="965"/>
+- <location filename="../mythmusic/streamview.cpp" line="982"/>
+- <location filename="../mythmusic/streamview.cpp" line="1029"/>
+- <location filename="../mythmusic/streamview.cpp" line="1046"/>
++ <location filename="../mythmusic/streamview.cpp" line="953"/>
++ <location filename="../mythmusic/streamview.cpp" line="970"/>
++ <location filename="../mythmusic/streamview.cpp" line="1017"/>
++ <location filename="../mythmusic/streamview.cpp" line="1034"/>
+ <source>&lt;All Countries&gt;</source>
+ <translation>&lt;All Countries&gt;</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="992"/>
+- <location filename="../mythmusic/streamview.cpp" line="1009"/>
+- <location filename="../mythmusic/streamview.cpp" line="1028"/>
+- <location filename="../mythmusic/streamview.cpp" line="1045"/>
++ <location filename="../mythmusic/streamview.cpp" line="980"/>
++ <location filename="../mythmusic/streamview.cpp" line="997"/>
++ <location filename="../mythmusic/streamview.cpp" line="1016"/>
++ <location filename="../mythmusic/streamview.cpp" line="1033"/>
+ <source>&lt;All Languages&gt;</source>
+ <translation>&lt;All Languages&gt;</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="1133"/>
++ <location filename="../mythmusic/streamview.cpp" line="1121"/>
+ <source>Updating stream list. Please Wait ...</source>
+- <translation>Updating stream list. Please Wait ...</translation>
++ <translation>Updating Stream List...</translation>
+ </message>
+ </context>
+ <context>
+ <name>SearchView</name>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="60"/>
++ <location filename="../mythmusic/searchview.cpp" line="54"/>
+ <source>All Fields</source>
+ <translation>All Fields</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="62"/>
++ <location filename="../mythmusic/searchview.cpp" line="56"/>
+ <source>Artist</source>
+ <translation>Artist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="64"/>
++ <location filename="../mythmusic/searchview.cpp" line="58"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="66"/>
++ <location filename="../mythmusic/searchview.cpp" line="60"/>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="68"/>
++ <location filename="../mythmusic/searchview.cpp" line="62"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="177"/>
+- <location filename="../mythmusic/searchview.cpp" line="288"/>
++ <location filename="../mythmusic/searchview.cpp" line="171"/>
++ <location filename="../mythmusic/searchview.cpp" line="278"/>
+ <source>Add To Playlist</source>
+- <translation>Add To Playlist</translation>
++ <translation>Add to Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="177"/>
+- <location filename="../mythmusic/searchview.cpp" line="285"/>
++ <location filename="../mythmusic/searchview.cpp" line="171"/>
++ <location filename="../mythmusic/searchview.cpp" line="275"/>
+ <source>Remove From Playlist</source>
+- <translation>Remove From Playlist</translation>
++ <translation>Remove from Playlist</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="189"/>
+- <location filename="../mythmusic/searchview.cpp" line="289"/>
++ <location filename="../mythmusic/searchview.cpp" line="183"/>
++ <location filename="../mythmusic/searchview.cpp" line="279"/>
+ <source>Add To Playlist And Play</source>
+- <translation>Add To Playlist And Play</translation>
++ <translation>Add to Playlist and Play</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="201"/>
+- <location filename="../mythmusic/searchview.cpp" line="295"/>
++ <location filename="../mythmusic/searchview.cpp" line="195"/>
++ <location filename="../mythmusic/searchview.cpp" line="285"/>
+ <source>Search List...</source>
+ <translation>Search List...</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="274"/>
++ <location filename="../mythmusic/searchview.cpp" line="264"/>
+ <source>Search Actions</source>
+ <translation>Search Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/searchview.cpp" line="297"/>
++ <location filename="../mythmusic/searchview.cpp" line="287"/>
+ <source>More Options</source>
+ <translation>More Options</translation>
+ </message>
+@@ -1889,7 +1885,7 @@
+ <context>
+ <name>SmartPLCriteriaRow</name>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="361"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="357"/>
+ <source>and</source>
+ <translation>and</translation>
+ </message>
+@@ -1897,7 +1893,7 @@
+ <context>
+ <name>SmartPLDateDialog</name>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="2256"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="2233"/>
+ <source>Invalid Date</source>
+ <translation>Invalid Date</translation>
+ </message>
+@@ -1905,7 +1901,7 @@
+ <context>
+ <name>SmartPLResultViewer</name>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1780"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1765"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+@@ -1913,84 +1909,84 @@
+ <context>
+ <name>SmartPlaylistEditor</name>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="429"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="764"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="870"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="425"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="759"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="865"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="430"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="872"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="1037"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="426"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="867"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="1031"/>
+ <source>Any</source>
+ <translation>Any</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="505"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="688"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="500"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="683"/>
+ <source>New Category</source>
+ <translation>New Category</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="508"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="503"/>
+ <source>Enter Name Of New Category</source>
+- <translation>Enter Name Of New Category</translation>
++ <translation>Enter Name of New Category</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="520"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="689"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="515"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="684"/>
+ <source>Delete Category</source>
+ <translation>Delete Category</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="522"/>
+- <location filename="../mythmusic/smartplaylist.cpp" line="690"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="517"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="685"/>
+ <source>Rename Category</source>
+ <translation>Rename Category</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="525"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="520"/>
+ <source>Enter New Name For Category: %1</source>
+- <translation>Enter New Name For Category: %1</translation>
++ <translation>Enter New Name for Category: %1</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="582"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="577"/>
+ <source>Delete Criteria?</source>
+ <translation>Delete Criteria?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="674"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="669"/>
+ <source>Category Actions</source>
+ <translation>Category Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="697"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="692"/>
+ <source>Criteria Actions</source>
+ <translation>Criteria Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="714"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="709"/>
+ <source>Edit Criteria</source>
+ <translation>Edit Criteria</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="716"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="711"/>
+ <source>Add Criteria</source>
+ <translation>Add Criteria</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="719"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="714"/>
+ <source>Delete Criteria</source>
+ <translation>Delete Criteria</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="958"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="952"/>
+ <source>Are you sure you want to delete this Category?</source>
+ <translation>Are you sure you want to delete this Category?</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/smartplaylist.cpp" line="960"/>
++ <location filename="../mythmusic/smartplaylist.cpp" line="954"/>
+ <source>It will also delete any Smart Playlists belonging to this category.</source>
+ <translation>It will also delete any Smart Playlists belonging to this category.</translation>
+ </message>
+@@ -1998,35 +1994,35 @@
+ <context>
+ <name>StreamView</name>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="91"/>
++ <location filename="../mythmusic/streamview.cpp" line="83"/>
+ <source>Stream Actions</source>
+ <translation>Stream Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="92"/>
+- <location filename="../mythmusic/streamview.cpp" line="309"/>
++ <location filename="../mythmusic/streamview.cpp" line="84"/>
++ <location filename="../mythmusic/streamview.cpp" line="301"/>
+ <source>Add Stream</source>
+ <translation>Add Stream</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="96"/>
+- <location filename="../mythmusic/streamview.cpp" line="323"/>
++ <location filename="../mythmusic/streamview.cpp" line="88"/>
++ <location filename="../mythmusic/streamview.cpp" line="315"/>
+ <source>Edit Stream</source>
+ <translation>Edit Stream</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="97"/>
+- <location filename="../mythmusic/streamview.cpp" line="319"/>
++ <location filename="../mythmusic/streamview.cpp" line="89"/>
++ <location filename="../mythmusic/streamview.cpp" line="311"/>
+ <source>Remove Stream</source>
+ <translation>Remove Stream</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="103"/>
++ <location filename="../mythmusic/streamview.cpp" line="95"/>
+ <source>More Options</source>
+ <translation>More Options</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/streamview.cpp" line="411"/>
++ <location filename="../mythmusic/streamview.cpp" line="399"/>
+ <source>Are you sure you want to delete this Stream?
+ Broadcaster: %1 - Channel: %2</source>
+ <translation>Are you sure you want to delete this Stream?
+@@ -2154,7 +2150,7 @@
+ <message>
+ <location filename="themestrings.h" line="52"/>
+ <source>Already in database</source>
+- <translation>Already in database</translation>
++ <translation>Already in Database</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="46"/>
+@@ -2369,17 +2365,17 @@
+ <message>
+ <location filename="themestrings.h" line="178"/>
+ <source>Directory to hold music:</source>
+- <translation>Directory to hold music:</translation>
++ <translation>Directory to Hold Music:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="101"/>
+ <source>CD device:</source>
+- <translation>CD device:</translation>
++ <translation>CD Device:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="102"/>
+ <source>Audio device:</source>
+- <translation>Audio device:</translation>
++ <translation>Audio Device:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="104"/>
+@@ -2394,7 +2390,7 @@
+ <message>
+ <location filename="themestrings.h" line="240"/>
+ <source>Convert stereo to 5.1 sound</source>
+- <translation>Convert stereo to 5.1 sound</translation>
++ <translation>Convert Stereo to 5.1 Sound</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="241"/>
+@@ -2404,7 +2400,7 @@
+ <message>
+ <location filename="themestrings.h" line="242"/>
+ <source>Allow metadata to be written to tags</source>
+- <translation>Allow metadata to be written to tags</translation>
++ <translation>Allow Metadata to be Written to Tags</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="77"/>
+@@ -2419,17 +2415,17 @@
+ <message>
+ <location filename="themestrings.h" line="108"/>
+ <source>Resume mode:</source>
+- <translation>Resume mode:</translation>
++ <translation>Resume Mode:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="109"/>
+ <source>Action on exit:</source>
+- <translation>Action on exit:</translation>
++ <translation>Action on Exit:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="244"/>
+ <source>Automatically lookup CDs</source>
+- <translation>Automatically lookup CDs</translation>
++ <translation>Automatically Lookup CDs</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="245"/>
+@@ -2479,22 +2475,22 @@
+ <message>
+ <location filename="themestrings.h" line="119"/>
+ <source>File storage location:</source>
+- <translation>File storage location:</translation>
++ <translation>File Storage Location:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="246"/>
+ <source>Replace space with underscore</source>
+- <translation>Replace space with underscore</translation>
++ <translation>Replace Space with Underscore</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="247"/>
+ <source>Use variable bitrates</source>
+- <translation>Use variable bitrates</translation>
++ <translation>Use Variable Bitrates</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="248"/>
+ <source>Automatically eject CDs after ripping</source>
+- <translation>Automatically eject CDs after ripping</translation>
++ <translation>Automatically Eject CDs After Ripping</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="125"/>
+@@ -2534,7 +2530,7 @@
+ <message>
+ <location filename="themestrings.h" line="250"/>
+ <source>Enable directories on MP3 Creation</source>
+- <translation>Enable directories on MP3 Creation</translation>
++ <translation>Enable Directories on MP3 Creation</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="133"/>
+@@ -2555,12 +2551,12 @@
+ <message>
+ <location filename="themestrings.h" line="251"/>
+ <source>Change Visualizer on each song</source>
+- <translation>Change Visualizer on each song</translation>
++ <translation>Change Visualizer on Each Song</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="252"/>
+ <source>Randomize Visualizer order</source>
+- <translation>Randomize Visualizer order</translation>
++ <translation>Randomize Visualizer Order</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="138"/>
+@@ -2610,7 +2606,7 @@
+ <message>
+ <location filename="themestrings.h" line="22"/>
+ <source>You haven&apos;t selected any tracks to play</source>
+- <translation>You haven&apos;t selected any tracks to play</translation>
++ <translation>You haven&apos;t selected any tracks to play.</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="10"/>
+@@ -2630,17 +2626,17 @@
+ <message>
+ <location filename="themestrings.h" line="190"/>
+ <source>Play List Editor (tree)</source>
+- <translation>Play List Editor (tree)</translation>
++ <translation>Play List Editor (Tree)</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="191"/>
+ <source>Play List Editor (gallery)</source>
+- <translation>Play List Editor (gallery)</translation>
++ <translation>Play List Editor (Gallery)</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="192"/>
+ <source>Play List Editor (search)</source>
+- <translation>Play List Editor (search)</translation>
++ <translation>Play List Editor (Search)</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="23"/>
+@@ -2985,17 +2981,17 @@
+ <message>
+ <location filename="themestrings.h" line="179"/>
+ <source>Resume mode (Playlist Editor):</source>
+- <translation>Resume mode (Playlist Editor):</translation>
++ <translation>Resume Mode (Playlist Editor):</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="180"/>
+ <source>Resume mode (Radio):</source>
+- <translation>Resume mode (Radio):</translation>
++ <translation>Resume Mode (Radio):</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="181"/>
+ <source>Action on jumppoint:</source>
+- <translation>Action on jumppoint:</translation>
++ <translation>Action on Jumppoint:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="182"/>
+@@ -3015,7 +3011,7 @@
+ <message>
+ <location filename="themestrings.h" line="209"/>
+ <source>Clears the entire database:</source>
+- <translation>Clears the entire database:</translation>
++ <translation>Clears the Entire Database:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="210"/>
+@@ -3090,7 +3086,7 @@
+ <message>
+ <location filename="themestrings.h" line="221"/>
+ <source>Date added:</source>
+- <translation>Date added:</translation>
++ <translation>Date Added:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="223"/>
+@@ -3155,7 +3151,7 @@
+ <message>
+ <location filename="themestrings.h" line="103"/>
+ <source>Convert stereo to 5.1 sound:</source>
+- <translation>Convert stereo to 5.1 sound:</translation>
++ <translation>Convert Stereo to 5.1 Sound:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="105"/>
+@@ -3165,12 +3161,12 @@
+ <message>
+ <location filename="themestrings.h" line="106"/>
+ <source>Allow metadata to be written to tags:</source>
+- <translation>Allow metadata to be written to tags:</translation>
++ <translation>Allow Metadata to be Written to Tags:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="110"/>
+ <source>Automatically lookup CDs:</source>
+- <translation>Automatically lookup CDs:</translation>
++ <translation>Automatically Lookup CDs:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="111"/>
+@@ -3180,27 +3176,27 @@
+ <message>
+ <location filename="themestrings.h" line="120"/>
+ <source>Replace space with underscore:</source>
+- <translation>Replace space with underscore:</translation>
++ <translation>Replace Space with Underscore:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="123"/>
+ <source>Use variable bitrates:</source>
+- <translation>Use variable bitrates:</translation>
++ <translation>Use Variable Bitrates:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="124"/>
+ <source>Automatically eject CDs after ripping:</source>
+- <translation>Automatically eject CDs after ripping:</translation>
++ <translation>Automatically Eject CDs After Ripping:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="134"/>
+ <source>Change Visualizer on each song:</source>
+- <translation>Change Visualizer on each song:</translation>
++ <translation>Change Visualizer on Each Song:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="135"/>
+ <source>Randomize Visualizer order:</source>
+- <translation>Randomize Visualizer order:</translation>
++ <translation>Randomize Visualizer Order:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="127"/>
+@@ -3210,7 +3206,7 @@
+ <message>
+ <location filename="themestrings.h" line="132"/>
+ <source>Enable directories on MP3 Creation:</source>
+- <translation>Enable directories on MP3 Creation:</translation>
++ <translation>Enable Directories on MP3 Creation:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="147"/>
+@@ -3320,7 +3316,7 @@
+ <message>
+ <location filename="themestrings.h" line="243"/>
+ <source>Resume mode (Playlist):</source>
+- <translation>Resume mode (Playlist):</translation>
++ <translation>Resume Mode (Playlist):</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="253"/>
+@@ -3390,7 +3386,7 @@
+ <message>
+ <location filename="themestrings.h" line="268"/>
+ <source>Allow writing metadata to tags:</source>
+- <translation>Allow writing metadata to tags:</translation>
++ <translation>Allow Writing Metadata to Tags:</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="269"/>
+@@ -3445,7 +3441,7 @@
+ <message>
+ <location filename="themestrings.h" line="280"/>
+ <source>Reset music database</source>
+- <translation>Reset music database</translation>
++ <translation>Reset Music Database</translation>
+ </message>
+ <message>
+ <location filename="themestrings.h" line="285"/>
+@@ -3511,51 +3507,51 @@
+ <context>
+ <name>VisualizationSettings</name>
+ <message>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="58"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="53"/>
+ <source>Change the visualizer when the song changes.</source>
+ <translation>Change the visualizer when the song changes.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="59"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="54"/>
+ <source>On changing the visualizer pick a new one at random.</source>
+ <translation>On changing the visualizer pick a new one at random.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="60"/>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="64"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="55"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="59"/>
+ <source>If set to &quot;2&quot;, visualizations will be scaled in half. Currently only used by the goom visualization. Reduces CPU load on slower machines.</source>
+ <translation>If set to &quot;2&quot;, visualizations will be scaled in half. Currently only used by the goom visualization. Reduces CPU load on slower machines.</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="68"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="63"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizationsettings.cpp" line="69"/>
++ <location filename="../mythmusic/visualizationsettings.cpp" line="64"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ </context>
+ <context>
+ <name>VisualizerView</name>
+ <message>
+- <location filename="../mythmusic/visualizerview.cpp" line="102"/>
++ <location filename="../mythmusic/visualizerview.cpp" line="92"/>
+ <source>Actions</source>
+ <translation>Actions</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizerview.cpp" line="106"/>
++ <location filename="../mythmusic/visualizerview.cpp" line="96"/>
+ <source>Change Visualizer</source>
+ <translation>Change Visualizer</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizerview.cpp" line="107"/>
++ <location filename="../mythmusic/visualizerview.cpp" line="97"/>
+ <source>Show Track Info</source>
+ <translation>Show Track Info</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualizerview.cpp" line="108"/>
++ <location filename="../mythmusic/visualizerview.cpp" line="98"/>
+ <source>Other Options</source>
+ <translation>Other Options</translation>
+ </message>
+@@ -3563,52 +3559,52 @@
+ <context>
+ <name>Visualizers</name>
+ <message>
+- <location filename="../mythmusic/bumpscope.cpp" line="566"/>
++ <location filename="../mythmusic/bumpscope.cpp" line="557"/>
+ <source>BumpScope</source>
+ <translation>BumpScope</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/goom/mythgoom.cpp" line="126"/>
++ <location filename="../mythmusic/mythgoom.cpp" line="126"/>
+ <source>Goom</source>
+ <translation>Goom</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/synaesthesia.cpp" line="652"/>
++ <location filename="../mythmusic/synaesthesia.cpp" line="650"/>
+ <source>Synaesthesia</source>
+ <translation>Synaesthesia</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="536"/>
++ <location filename="../mythmusic/visualize.cpp" line="520"/>
+ <source>StereoScope</source>
+ <translation>StereoScope</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="562"/>
++ <location filename="../mythmusic/visualize.cpp" line="546"/>
+ <source>MonoScope</source>
+ <translation>MonoScope</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="811"/>
++ <location filename="../mythmusic/visualize.cpp" line="789"/>
+ <source>Spectrum</source>
+ <translation>Spectrum</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="903"/>
++ <location filename="../mythmusic/visualize.cpp" line="877"/>
+ <source>Squares</source>
+ <translation>Squares</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="1372"/>
++ <location filename="../mythmusic/visualize.cpp" line="1339"/>
+ <source>Piano</source>
+ <translation>Piano</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="1570"/>
++ <location filename="../mythmusic/visualize.cpp" line="1533"/>
+ <source>AlbumArt</source>
+- <translation>AlbumArt</translation>
++ <translation>Album Art</translation>
+ </message>
+ <message>
+- <location filename="../mythmusic/visualize.cpp" line="1620"/>
++ <location filename="../mythmusic/visualize.cpp" line="1579"/>
+ <source>Blank</source>
+ <translation>Blank</translation>
+ </message>
+@@ -3616,7 +3612,7 @@
+ <context>
+ <name>avfDecoderFactory</name>
+ <message>
+- <location filename="../mythmusic/avfdecoder.cpp" line="628"/>
++ <location filename="../mythmusic/avfdecoder.cpp" line="624"/>
+ <source>Internal Decoder</source>
+ <translation>Internal Decoder</translation>
+ </message>
diff --git a/abs/core/mythtv/stable-30/mythplugins/mythplugins-mythzoneminder.install b/abs/core/mythtv/stable-30/mythplugins/mythplugins-mythzoneminder.install
new file mode 100644
index 0000000..a4e0c0d
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythplugins/mythplugins-mythzoneminder.install
@@ -0,0 +1,11 @@
+post_install() {
+ . /etc/systemconfig
+ if [ $SystemType = Master_backend -o $SystemType = Standalone ]
+ then
+ echo "This looks a zoneminder server install"
+ echo "Installing zoneminder"
+ #for reference the pacman statement below will not work because of a db lock.
+ pacman -S zoneminder
+ fi
+
+}
diff --git a/abs/core/mythtv/stable-30/mythtv/0031-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch b/abs/core/mythtv/stable-30/mythtv/0031-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch
new file mode 100644
index 0000000..4a2c4c3
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/0031-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch
@@ -0,0 +1,82 @@
+diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/ssdp.cpp mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/ssdp.cpp
+--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/ssdp.cpp 2019-01-05 12:44:55.383333333 +0100
++++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/ssdp.cpp 2019-01-05 12:44:56.990000000 +0100
+@@ -170,21 +170,21 @@
+ // ------------------------------------------------------------------
+
+ LOG(VB_UPNP, LOG_INFO,
+- "SSDP::EnableNotifications() - sending NTS_byebye");
+- m_pNotifyTask->SetNTS( NTS_byebye );
+- m_pNotifyTask->Execute( nullptr );
+-
+- m_bAnnouncementsEnabled = true;
++ "SSDP::EnableNotifications() - sending NTS_byebye2");
++ m_pNotifyTask->SetNTS( NTS_byebye2 );
++ }
++ else
++ {
++ LOG(VB_UPNP, LOG_INFO,
++ "SSDP::EnableNotifications() - sending NTS_alive");
++ m_pNotifyTask->SetNTS( NTS_alive );
+ }
+
++ m_bAnnouncementsEnabled = true;
++
+ // ------------------------------------------------------------------
+ // Add Announcement Task to the Queue
+ // ------------------------------------------------------------------
+-
+- LOG(VB_UPNP, LOG_INFO, "SSDP::EnableNotifications() - sending NTS_alive");
+-
+- m_pNotifyTask->SetNTS( NTS_alive );
+-
+ TaskQueue::Instance()->AddTask(m_pNotifyTask);
+
+ LOG(VB_UPNP, LOG_INFO,
+diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.cpp mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.cpp
+--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.cpp 2019-01-05 12:44:55.383333333 +0100
++++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.cpp 2019-01-05 12:44:56.990000000 +0100
+@@ -127,7 +127,9 @@
+
+ pSocket->writeBlock( scPacket, scPacket.length(),
+ pSocket->address(), pSocket->port() );
+- std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
++ // Only wait if not sending final bybbye. This speeds up shutdown
++ if (m_eNTS != NTS_byebye)
++ std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
+ pSocket->writeBlock( scPacket, scPacket.length(),
+ pSocket->address(), pSocket->port() );
+ }
+@@ -168,6 +170,11 @@
+
+ if (m_eNTS == NTS_alive)
+ pQueue->AddTask( (m_nMaxAge / 2) * 1000, (Task *)this );
++ else if (m_eNTS == NTS_byebye2)
++ {
++ m_eNTS = NTS_alive;
++ pQueue->AddTask( this );
++ }
+
+ m_mutex.unlock();
+
+diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.h mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.h
+--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.h 2019-01-05 12:44:55.383333333 +0100
++++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.h 2019-01-05 12:44:56.990000000 +0100
+@@ -38,7 +38,8 @@
+ typedef enum
+ {
+ NTS_alive = 0,
+- NTS_byebye = 1
++ NTS_byebye = 1,
++ NTS_byebye2
+
+ } UPnpNotifyNTS;
+
+@@ -90,6 +91,7 @@
+ {
+ case NTS_alive : return( "ssdp:alive" );
+ case NTS_byebye: return( "ssdp:byebye" );
++ case NTS_byebye2: return( "ssdp:byebye" );
+ }
+ return( "unknown" );
+ }
diff --git a/abs/core/mythtv/stable-30/mythtv/0227-OSD-Add-interlaced-status-to-OSD-debug-screen.patch b/abs/core/mythtv/stable-30/mythtv/0227-OSD-Add-interlaced-status-to-OSD-debug-screen.patch
new file mode 100644
index 0000000..f61693d
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/0227-OSD-Add-interlaced-status-to-OSD-debug-screen.patch
@@ -0,0 +1,19 @@
+diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythtv/mythplayer.cpp mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythtv/mythplayer.cpp
+--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythtv/mythplayer.cpp 2019-01-05 12:45:37.260000000 +0100
++++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythtv/mythplayer.cpp 2019-01-05 12:45:38.720000000 +0100
+@@ -5074,13 +5074,13 @@
+ if (decoder)
+ infoMap["videocodecdesc"] = decoder->GetRawEncodingType();
+ infoMap["videowidth"] = QString::number(width);
+- infoMap["videoheight"] = QString::number(height);
++ bool interlaced = is_interlaced(m_scan);
++ infoMap["videoheight"] = QString::number(height) + (interlaced ? "i" : "");
+ infoMap["videoframerate"] = QString::number(video_frame_rate, 'f', 2);
+
+ if (width < 640)
+ return;
+
+- bool interlaced = is_interlaced(m_scan);
+ if (width == 1920 || height == 1080 || height == 1088)
+ infoMap["videodescrip"] = interlaced ? "HD_1080_I" : "HD_1080_P";
+ else if ((width == 1280 || height == 720) && !interlaced)
diff --git a/abs/core/mythtv/stable-30/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch b/abs/core/mythtv/stable-30/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch
new file mode 100644
index 0000000..192f0fc
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch
@@ -0,0 +1,71 @@
+From 273937c9ee4ba00ad049ac3c9fe62ecabd2f8fdb Mon Sep 17 00:00:00 2001
+From: Lawrence Rust <lvr@softsystem.co.uk>
+Date: Thu, 1 Oct 2015 09:56:13 +0100
+Subject: [PATCH 283/290] FE: Add network status to machine status dialog
+
+Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
+---
+ mythtv/programs/mythfrontend/statusbox.cpp | 33 ++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/mythtv/programs/mythfrontend/statusbox.cpp b/mythtv/programs/mythfrontend/statusbox.cpp
+index f0078ea..23c5a24 100644
+--- a/mythtv/programs/mythfrontend/statusbox.cpp
++++ src/mythtv/programs/mythfrontend/statusbox.cpp
+@@ -5,6 +5,8 @@ using namespace std;
+
+ #include <QRegExp>
+ #include <QHostAddress>
++#include <QHostInfo>
++#include <QNetworkInterface>
+
+ #include "mythcorecontext.h"
+ #include "filesysteminfo.h"
+@@ -1221,6 +1223,12 @@ void StatusBox::doMachineStatus()
+ line = tr("This machine:");
+ AddLogLine(line, machineStr);
+
++ // Hostname
++ line = " " + tr("Hostname") + ": " + QHostInfo::localHostName();
++ if ( !QHostInfo::localDomainName().isEmpty())
++ line += "." + QHostInfo::localDomainName();
++ AddLogLine(line, machineStr);
++
+ // uptime
+ if (!getUptime(uptime))
+ uptime = 0;
+@@ -1264,6 +1272,31 @@ void StatusBox::doMachineStatus()
+ }
+ }
+
++ // Network status
++ line = " " + tr("Interfaces") + ":";
++ QString sep = " ";
++ foreach( QNetworkInterface iface, QNetworkInterface::allInterfaces())
++ {
++ QNetworkInterface::InterfaceFlags f = iface.flags();
++ if (!(f & QNetworkInterface::IsUp))
++ continue;
++ if (!(f & QNetworkInterface::IsRunning))
++ continue;
++ if (f & QNetworkInterface::IsLoopBack)
++ continue;
++
++ line += sep + iface.humanReadableName() + " [";
++ sep = ", ";
++ QString sep2 = "";
++ foreach( QNetworkAddressEntry addr, iface.addressEntries())
++ {
++ line += sep2 + addr.ip().toString();
++ sep2 = ", ";
++ }
++ line += "]";
++ }
++ AddLogLine(line, machineStr);
++
+ if (!m_isBackendActive)
+ {
+ line = tr("MythTV server") + ':';
+--
+1.7.9.5
+
diff --git a/abs/core/mythtv/stable-30/mythtv/PKGBUILD b/abs/core/mythtv/stable-30/mythtv/PKGBUILD
new file mode 100644
index 0000000..1aefb62
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/PKGBUILD
@@ -0,0 +1,144 @@
+pkgname=mythtv
+pkgver=30.0
+pkgrel=5
+commit_hash=`cat ../git_src/git_hash`
+pkgdesc="A Homebrew PVR project $commit_hash"
+arch=('x86_64')
+url="http://www.mythtv.org/"
+license=('GPL')
+depends=('avahi' 'exiv2' 'faad2' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libbluray'
+ 'libcdio' 'libcec' 'libcrystalhd-git' 'libgl' 'libhdhomerun' 'libiec61883'
+ 'libsamplerate' 'libva' 'libvdpau' 'libvpx' 'libxnvctrl' 'libxinerama'
+ 'libxml2' 'libxrandr' 'LinHES-config>=8.1-6' 'LinHES-system>=8.4-4'
+ 'lirc-utils' 'minizip' 'mysql-clients' 'mysql-python'
+ 'openssl' 'perl-date-manip' 'perl-dbd-mysql'
+ 'perl-io-socket-inet6' 'perl-libwww' 'perl-math-round'
+ 'perl-net-upnp' 'perl-soap-lite' 'perl-xml-sax' 'python2-future'
+ 'python2-pycurl' 'python2-requests' 'python2-requests-cache'
+ 'python2-lxml' 'qt5-script' 'qt5-webkit' 'sdl' 'taglib' 'unzip' 'urlgrabber'
+ 'wget' 'x264' 'x265' 'xmltv')
+makedepends=('apache-ant' 'mesa' 'mesa-libgl' 'yasm' 'git' 'rsync' 'qt5-tools')
+replaces=()
+groups=('pvr')
+backup=()
+install='mythtv.install'
+
+patches=(
+ 'myth_settings.patch'
+ '0031-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch'
+ '0227-OSD-Add-interlaced-status-to-OSD-debug-screen.patch'
+ 'videoAlwaysUseBookmark.patch'
+ 'autoskip_reduce_commskip_jumpback.patch'
+ 'change_msg_types.patch'
+# 'disable_mythnotification_tuner_failure.patch'
+ 'searchMetatdataSelectedGrabber.patch'
+ 'defaultThemeLinHES.patch'
+ 'addEnableDisableAutoShutdownToSystemMenu.patch'
+ 'mythfrontend_en_us.ts_Title_Case.patch'
+ 'fixTranslations.patch'
+ 'pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch'
+ 'addHostnameIPtoMachineStatus.patch'
+ 'revertQTsettingsForMythinstall.patch'
+ )
+
+optdepends=()
+source=(`echo ${patches[@]:0}` 'recordings')
+
+prepare() {
+ if [ -e ${srcdir}/mythtv ]
+ then
+ msg "Removing old mythtv src"
+ rm -rf ${srcdir}/mythtv
+ fi
+
+ cd ${startdir}
+ msg "Copying in mythtv git_src"
+ cp -rp ../git_src/mythtv/mythtv $srcdir
+ cd ${srcdir}/$pkgname
+ echo "#!/bin/bash" > version.sh
+
+ msg "--------------------------applying patches------------------------------"
+ for i in `echo ${patches[@]:0}`
+ do
+ echo applying $i
+ patch -Np2 -i ${startdir}/src/$i || return 1
+ echo "-----------------------------"
+ done
+ msg "--------------------------done applying patches-------------------------"
+
+ msg "Change python to python2"
+ find 'bindings/python' 'contrib' 'programs/scripts' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+
+ msg "Updating en_us Translation"
+ cd ${srcdir}/$pkgname/i18n
+ lrelease -removeidentical mythfrontend_en_us.ts
+}
+
+build() {
+ cd ${srcdir}/$pkgname
+
+ msg "Configuring mythtv"
+ ARCH=${CARCH/_/-}
+ ./configure --prefix=/usr \
+ --cpu=${ARCH} \
+ --disable-altivec \
+ --disable-audio-jack \
+ --disable-audio-pulseoutput \
+ --disable-distcc \
+ --dvb-path=/usr/include \
+ --enable-bdjava \
+ --enable-libmp3lame \
+ --enable-libvpx \
+ --enable-libxvid \
+ --enable-libx264 \
+ --enable-libx265 \
+ --enable-sdl \
+ --enable-sdl2 \
+ --python=python2 \
+ --with-bindings=perl,python || return 1
+ msg "Compiling mythtv"
+ make all || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
+ # basic install
+ make INSTALL_ROOT="${pkgdir}" install
+ # install contrib files
+ rsync -arp --exclude .svn --delete-excluded contrib ${pkgdir}/usr/share/mythtv/ || return 1
+ # install database structure
+ rsync -arp --exclude .svn --delete-excluded database ${pkgdir}/usr/share/mythtv/ || return 1
+ # install docs
+ rsync -arp --exclude .svn --delete-excluded docs ${pkgdir}/usr/share/mythtv/ || return 1
+
+ # patch the xml LinHES style
+ cp -r ${startdir}/menu-xml/*.xml ${pkgdir}/usr/share/mythtv/themes/defaultmenu/
+ cd ${pkgdir}/usr/share/mythtv
+ patch -p0 < ${startdir}/menu-xml/mainmenu.xml.patch || return 1
+ patch -p0 < ${startdir}/menu-xml/optical_menu.xml.patch || return 1
+ patch -p0 < ${startdir}/menu-xml/library.xml.patch || return 1
+
+ # make mythtv log dir for old scripts that use it
+ mkdir -p ${pkgdir}/var/log/mythtv
+ chown 1000.1000 ${pkgdir}/var/log/mythtv
+
+ #install recordings (was pretty)
+ mkdir -p ${pkgdir}/etc/cron.hourly/
+ install -m0755 ${srcdir}/recordings ${pkgdir}/etc/cron.hourly/
+}
+
+md5sums=('fb5a87c52a31168a0c8fdde72f27cc45'
+ '8488776c337ec5d1b15d026c5be40b04'
+ 'e4ced95f173911eaf735e5975788d51e'
+ '41098e898361a5a3cde3eaae358482a8'
+ '2f983590a8a3cf81f386cc65b9628e13'
+ 'f764758832f8e9068ffda1ac0c8aacba'
+ '0f674b9cad031ba1e03aaf6b5ee1499f'
+ 'b0b238320fa78a4928dce2cea7c85071'
+ '8e4492d1777234a021f368bd6ee964ee'
+ '208f46d91c5911e9572d300d89381d7b'
+ '72404ebfec2f18536ccc10d8e2bc8757'
+ 'd05eaf66c434a131c8efb4d87e99b402'
+ 'b3ae1cc55f40c6953121415e08c166f4'
+ '73ad2f3bec8745f7a3bbf2169ee34db3'
+ '633cd853a89aeee5388daaad21ccec28')
diff --git a/abs/core/mythtv/stable-30/mythtv/addEnableDisableAutoShutdownToSystemMenu.patch b/abs/core/mythtv/stable-30/mythtv/addEnableDisableAutoShutdownToSystemMenu.patch
new file mode 100644
index 0000000..b14e2e0
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/addEnableDisableAutoShutdownToSystemMenu.patch
@@ -0,0 +1,50 @@
+diff --git a/mythtv/libs/libmythui/myththemedmenu.cpp b/mythtv/libs/libmythui/myththemedmenu.cpp
+index ed2e54c..77aaf73 100644
+--- a/mythtv/libs/libmythui/myththemedmenu.cpp
++++ b/mythtv/libs/libmythui/myththemedmenu.cpp
+@@ -308,6 +308,8 @@ void MythThemedMenu::ShowMenu()
+ return;
+
+ int override_menu = GetMythDB()->GetNumSetting("OverrideExitMenu");
++ int MythShutdownLock = GetMythDB()->GetNumSetting("MythShutdownLock");
++ int idleTimeoutSecs = GetMythDB()->GetNumSetting("idleTimeoutSecs");
+ QString label = tr("System Menu");
+ MythScreenStack* mainStack = GetMythMainWindow()->GetMainStack();
+ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup");
+@@ -325,6 +327,21 @@ void MythThemedMenu::ShowMenu()
+ if (override_menu != 7)
+ m_menuPopup->AddButton(tr("Exit application"), QVariant("exit"));
+
++ // don't offer to enable/disable auto shutdown if auto shutdown is disabled
++ if (idleTimeoutSecs != 0)
++ {
++ if (MythShutdownLock == 0)
++ {
++ m_menuPopup->AddButton(tr("Disable Auto Shutdown"),
++ QVariant("lockShutdown"));
++ }
++ else
++ {
++ m_menuPopup->AddButton(tr("Enable Auto Shutdown"),
++ QVariant("unlockShutdown"));
++ }
++ }
++
+ switch (override_menu)
+ {
+ case 2:
+@@ -416,6 +433,14 @@ void MythThemedMenu::customEvent(QEvent *event)
+ QString arg("exiting_app");
+ m_state->m_callback(m_state->m_callbackdata, arg);
+ }
++ else if (action == "lockShutdown")
++ {
++ GetMythDB()->SaveSettingOnHost("MythShutdownLock", "1", NULL);
++ }
++ else if (action == "unlockShutdown")
++ {
++ GetMythDB()->SaveSettingOnHost("MythShutdownLock", "0", NULL);
++ }
+ }
+ else if (resultid == "password")
+ {
diff --git a/abs/core/mythtv/stable-30/mythtv/addHostnameIPtoMachineStatus.patch b/abs/core/mythtv/stable-30/mythtv/addHostnameIPtoMachineStatus.patch
new file mode 100644
index 0000000..2fd8b88
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/addHostnameIPtoMachineStatus.patch
@@ -0,0 +1,88 @@
+diff --git a/mythtv/programs/mythfrontend/statusbox.cpp b/mythtv/programs/mythfrontend/statusbox.cpp
+index e45016af50..73e7792a61 100644
+--- a/mythtv/programs/mythfrontend/statusbox.cpp
++++ b/mythtv/programs/mythfrontend/statusbox.cpp
+@@ -5,6 +5,7 @@ using namespace std;
+
+ #include <QRegExp>
+ #include <QHostAddress>
++ #include <QNetworkInterface>
+
+ #include "mythcorecontext.h"
+ #include "filesysteminfo.h"
+@@ -1271,9 +1272,10 @@ void StatusBox::doMachineStatus()
+ m_iconState->DisplayState("machine");
+ m_logList->Reset();
+ QString machineStr = tr("Machine Status shows some operating system "
+- "statistics of this machine");
++ "statistics of this machine.");
+ if (!m_isBackendActive)
+- machineStr.append(" " + tr("and the MythTV server"));
++ machineStr = tr("Machine Status shows some operating system "
++ "statistics of this machine and the MythTV server.");
+
+ if (m_helpText)
+ m_helpText->SetText(machineStr);
+@@ -1291,13 +1293,41 @@ void StatusBox::doMachineStatus()
+ line = tr("This machine:");
+ AddLogLine(line, machineStr);
+
++ // Hostname & IP
++ line = " " + tr("Hostname") + ": " + gCoreContext->GetHostName();
++ line.append(" " + tr("IP") + ": ");
++ QString sep = " ";
++ foreach(QNetworkInterface iface, QNetworkInterface::allInterfaces())
++ {
++ QNetworkInterface::InterfaceFlags f = iface.flags();
++ if (!(f & QNetworkInterface::IsUp))
++ continue;
++ if (!(f & QNetworkInterface::IsRunning))
++ continue;
++ if (f & QNetworkInterface::IsLoopBack)
++ continue;
++
++ sep = ", ";
++ QString sep2 = "";
++ foreach(QNetworkAddressEntry addr, iface.addressEntries())
++ {
++ if (addr.ip().protocol() == QAbstractSocket::IPv4Protocol || addr.ip().protocol() == QAbstractSocket::IPv6Protocol)
++ {
++ line += sep2 + addr.ip().toString();
++ sep2 = ", ";
++ }
++ }
++ line += "";
++ }
++ AddLogLine(line, machineStr);
++
+ // uptime
+ if (!getUptime(uptime))
+ uptime = 0;
+ line = uptimeStr(uptime);
+
+ // weighted average loads
+- line.append(". " + tr("Load") + ": ");
++ line.append(" " + tr("Load") + ": ");
+
+ #if defined(_WIN32) || defined(Q_OS_ANDROID)
+ line.append(tr("unknown") + " - getloadavg() " + tr("failed"));
+@@ -1339,13 +1369,18 @@ void StatusBox::doMachineStatus()
+ line = tr("MythTV server") + ':';
+ AddLogLine(line, machineStr);
+
++ // Hostname & IP
++ line = " " + tr("Hostname") + ": " + gCoreContext->GetSetting("MasterServerName");
++ line.append(" " + tr("IP") + ": " + gCoreContext->GetSetting("MasterServerIP"));
++ AddLogLine(line, machineStr);
++
+ // uptime
+ if (!RemoteGetUptime(uptime))
+ uptime = 0;
+ line = uptimeStr(uptime);
+
+ // weighted average loads
+- line.append(". " + tr("Load") + ": ");
++ line.append(" " + tr("Load") + ": ");
+ float floads[3];
+ if (RemoteGetLoad(floads))
+ {
diff --git a/abs/core/mythtv/stable-30/mythtv/autoskip_reduce_commskip_jumpback.patch b/abs/core/mythtv/stable-30/mythtv/autoskip_reduce_commskip_jumpback.patch
new file mode 100644
index 0000000..b6815ef
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/autoskip_reduce_commskip_jumpback.patch
@@ -0,0 +1,13 @@
+--- src/mythtv/libs/libmythtv/commbreakmap.cpp.orig 2017-03-15 20:34:21.722746111 +0000
++++ src/mythtv/libs/libmythtv/commbreakmap.cpp 2017-03-15 20:35:21.531732684 +0000
+@@ -271,8 +271,8 @@
+ {
+ comm_msg = tr("Skipping Back.");
+
+- if (lastCommSkipStart > (2.0 * video_frame_rate))
+- lastCommSkipStart -= (long long) (2.0 * video_frame_rate);
++ if (lastCommSkipStart > (video_frame_rate))
++ lastCommSkipStart -= (long) (video_frame_rate);
+ lastCommSkipDirection = 0;
+ lastCommSkipTime = time(NULL);
+ jumpToFrame = lastCommSkipStart;
diff --git a/abs/core/mythtv/stable-30/mythtv/change_msg_types.patch b/abs/core/mythtv/stable-30/mythtv/change_msg_types.patch
new file mode 100644
index 0000000..029dd9a
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/change_msg_types.patch
@@ -0,0 +1,20 @@
+--- src/mythtv/libs/libmythtv/tv_play.cpp.orig 2017-03-15 20:27:51.672833870 +0000
++++ src/mythtv/libs/libmythtv/tv_play.cpp 2017-03-15 20:29:10.646025774 +0000
+@@ -12714,7 +12714,7 @@
+ ctx->UnlockPlayingInfo(__FILE__, __LINE__);
+
+ if (!desc.isEmpty())
+- UpdateOSDSeekMessage(ctx, desc, kOSDTimeout_Med);
++ SetOSDMessage(ctx, desc);
+ }
+
+ void TV::SetAutoCommercialSkip(const PlayerContext *ctx,
+@@ -12731,7 +12731,7 @@
+ ctx->UnlockDeletePlayer(__FILE__, __LINE__);
+
+ if (!desc.isEmpty())
+- UpdateOSDSeekMessage(ctx, desc, kOSDTimeout_Med);
++ SetOSDMessage(ctx, desc);
+ }
+
+ void TV::SetManualZoom(const PlayerContext *ctx, bool zoomON, QString desc)
diff --git a/abs/core/mythtv/stable-30/mythtv/defaultThemeLinHES.patch b/abs/core/mythtv/stable-30/mythtv/defaultThemeLinHES.patch
new file mode 100644
index 0000000..947176e
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/defaultThemeLinHES.patch
@@ -0,0 +1,11 @@
+--- src/mythtv/libs/libmythui/mythuihelper.h.orig 2016-12-29 16:08:28.319634823 +0000
++++ src/mythtv/libs/libmythui/mythuihelper.h 2016-12-29 16:09:03.245104062 +0000
+@@ -9,7 +9,7 @@
+ #include "mythuiexp.h"
+ #include "themeinfo.h"
+
+-#define DEFAULT_UI_THEME "MythCenter"
++#define DEFAULT_UI_THEME "LinHES"
+ #define FALLBACK_UI_THEME "Terra"
+
+ class MythUIHelperPrivate;
diff --git a/abs/core/mythtv/stable-30/mythtv/disable_mythnotification_tuner_failure.patch b/abs/core/mythtv/stable-30/mythtv/disable_mythnotification_tuner_failure.patch
new file mode 100644
index 0000000..8e03f24
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/disable_mythnotification_tuner_failure.patch
@@ -0,0 +1,43 @@
+--- src/mythtv/libs/libmythtv/tv_rec.cpp.orig 2017-09-15 21:17:57.761339002 +0000
++++ src/mythtv/libs/libmythtv/tv_rec.cpp 2017-09-15 21:16:22.383499573 +0000
+@@ -3956,19 +3956,6 @@ MPEGStreamData *TVRec::TuningSignalCheck
+ newRecStatus = RecStatus::Failing;
+ curRecording->SaveVideoProperties(VID_DAMAGED, VID_DAMAGED);
+
+- QString desc = tr("Good signal seen after %1 ms")
+- .arg(genOpt.channel_timeout +
+- startRecordingDeadline.msecsTo(current_time));
+- QString title = curRecording->GetTitle();
+- if (!curRecording->GetSubtitle().isEmpty())
+- title += " - " + curRecording->GetSubtitle();
+-
+- MythNotification mn(MythNotification::Check, desc,
+- "Recording", title,
+- tr("See 'Tuning timeout' in mythtv-setup "
+- "for this input."));
+- gCoreContext->SendEvent(MythEvent(mn));
+-
+ LOG(VB_GENERAL, LOG_WARNING, LOC +
+ QString("It took longer than %1 ms to get a signal lock. "
+ "Keeping status of '%2'")
+@@ -4016,19 +4003,6 @@ MPEGStreamData *TVRec::TuningSignalCheck
+
+ SendMythSystemRecEvent("REC_FAILING", curRecording);
+
+- QString desc = tr("Taking more than %1 ms to get a lock.")
+- .arg(genOpt.channel_timeout);
+- QString title = curRecording->GetTitle();
+- if (!curRecording->GetSubtitle().isEmpty())
+- title += " - " + curRecording->GetSubtitle();
+-
+- MythNotification mn(MythNotification::Error, desc,
+- "Recording", title,
+- tr("See 'Tuning timeout' in mythtv-setup "
+- "for this input."));
+- mn.SetDuration(30);
+- gCoreContext->SendEvent(MythEvent(mn));
+-
+ LOG(VB_GENERAL, LOG_WARNING, LOC +
+ QString("TuningSignalCheck: taking more than %1 ms to get a lock. "
+ "marking this recording as '%2'.")
+
diff --git a/abs/core/mythtv/stable-30/mythtv/fixTranslations.patch b/abs/core/mythtv/stable-30/mythtv/fixTranslations.patch
new file mode 100644
index 0000000..ba2c4fe
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/fixTranslations.patch
@@ -0,0 +1,130 @@
+diff --git a/mythtv/programs/mythfrontend/audiogeneralsettings.h b/mythtv/programs/mythfrontend/audiogeneralsettings.h
+index 79aa41dd8d..46421a84c2 100644
+--- a/mythtv/programs/mythfrontend/audiogeneralsettings.h
++++ b/mythtv/programs/mythfrontend/audiogeneralsettings.h
+@@ -19,6 +19,8 @@ class AudioTest;
+
+ class AudioConfigScreen : public StandardSettingDialog
+ {
++ Q_OBJECT
++
+ public:
+ AudioConfigScreen(MythScreenStack *parent, const char *name,
+ GroupSetting *groupSetting);
+diff --git a/mythtv/programs/mythfrontend/globalsettings.cpp b/mythtv/programs/mythfrontend/globalsettings.cpp
+index 4507619170..0618f9762b 100644
+--- a/mythtv/programs/mythfrontend/globalsettings.cpp
++++ b/mythtv/programs/mythfrontend/globalsettings.cpp
+@@ -3871,7 +3871,7 @@ class PlayBackScaling : public GroupSetting
+ PlayBackScaling::PlayBackScaling()
+ :GroupSetting()
+ {
+- setLabel(tr("Scaling"));
++ setLabel(PlaybackSettings::tr("Scaling"));
+ addChild(m_VertScan = VertScanPercentage());
+ addChild(m_YScan = YScanDisplacement());
+ addChild(m_HorizScan = HorizScanPercentage());
+@@ -3894,7 +3894,7 @@ void PlayBackScaling::updateButton(MythUIButtonListItem *item)
+ m_HorizScan->getValue() == "0" &&
+ m_YScan->getValue() == "0" &&
+ m_XScan->getValue() == "0")
+- item->SetText(tr("No scaling"),"value");
++ item->SetText(PlaybackSettings::tr("No scaling"),"value");
+ else
+ item->SetText(QString("%1%x%2%+%3%+%4%")
+ .arg(m_HorizScan->getValue())
+@@ -4364,7 +4364,7 @@ ChannelCheckBoxSetting::ChannelCheckBoxSetting(uint chanid,
+ m_channelId(chanid)
+ {
+ setLabel(QString("%1 %2").arg(channum).arg(channame));
+- setHelpText(tr("Select/Unselect channels for this channel group"));
++ setHelpText(ChannelGroupSettings::tr("Select/Unselect channels for this channel group"));
+ }
+
+ ChannelGroupSetting::ChannelGroupSetting(const QString &groupName,
+diff --git a/mythtv/programs/mythfrontend/globalsettings.h b/mythtv/programs/mythfrontend/globalsettings.h
+index e069ec1cfb..8c1de7a02e 100644
+--- a/mythtv/programs/mythfrontend/globalsettings.h
++++ b/mythtv/programs/mythfrontend/globalsettings.h
+@@ -259,6 +259,8 @@ class PlaybackProfileConfig : public GroupSetting
+
+ class ChannelGroupSetting : public GroupSetting
+ {
++ Q_OBJECT
++
+ public:
+ ChannelGroupSetting(const QString &groupName, int groupId);
+ virtual void Load();
+diff --git a/mythtv/programs/mythtv-setup/backendsettings.cpp b/mythtv/programs/mythtv-setup/backendsettings.cpp
+index 6de0bae49d..bf24cc4f1a 100644
+--- a/mythtv/programs/mythtv-setup/backendsettings.cpp
++++ b/mythtv/programs/mythtv-setup/backendsettings.cpp
+@@ -126,11 +126,12 @@ class IpAddressSettings : public HostCheckBoxSetting
+ explicit IpAddressSettings(/*Setting* trigger*/) :
+ HostCheckBoxSetting("ListenOnAllIps")
+ {
+- setLabel(QObject::tr("Listen on All IP Addresses"));
++ setLabel(BackendSettings::tr("Listen on All IP Addresses"));
+ setValue(true);
+- setHelpText(tr("Allow this backend to receive connections on any IP "
+- "Address assigned to it. Recommended for most users "
+- "for ease and reliability."));
++ setHelpText(BackendSettings::tr("Allow this backend to receive "
++ "connections on any IP Address assigned to it. "
++ "Recommended for most users for ease and "
++ "reliability."));
+
+ localServerIP = LocalServerIP();
+ localServerIP6 = LocalServerIP6();
+diff --git a/mythtv/i18n/translate.pro b/mythtv/i18n/translate.pro
+index 210d9907f1..d51ec37ee5 100644
+--- a/mythtv/i18n/translate.pro
++++ b/mythtv/i18n/translate.pro
+@@ -10,6 +10,8 @@ SOURCES += ../libs/libmyth/audio/*.cpp
+ SOURCES += ../libs/libmyth/audio/*.h
+ SOURCES += ../libs/libmythmetadata/*.cpp
+ SOURCES += ../libs/libmythmetadata/*.h
++SOURCES += ../libs/libmythservicecontracts/enums/*.cpp
++SOURCES += ../libs/libmythservicecontracts/enums/*.h
+ SOURCES += ../libs/libmythtv/*.cpp
+ SOURCES += ../libs/libmythtv/*.h
+ SOURCES += ../libs/libmythtv/AirPlay/*.cpp
+diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
+index ea0aa806d5..710650dc95 100644
+--- a/mythtv/libs/libmythtv/tv_play.cpp
++++ b/mythtv/libs/libmythtv/tv_play.cpp
+@@ -12018,7 +12018,7 @@ bool TV::MenuItemDisplayPlayback(const MenuItemContext &c)
+ if (m_tvm_canupmix)
+ {
+ active = m_tvm_upmixing;
+- BUTTON(actionName, tr("Auto Detect"));
++ BUTTON(actionName, tr("Enable Audio Upmixer"));
+ }
+ }
+ else if (actionName == "AUTODETECT_FILL")
+@@ -12035,6 +12035,14 @@ bool TV::MenuItemDisplayPlayback(const MenuItemContext &c)
+ {
+ BUTTON(actionName, tr("Manual Zoom Mode"));
+ }
++ else if (actionName == "BOTTOMLINEMOVE")
++ {
++ BUTTON(actionName, tr("Move BottomLine off screen"));
++ }
++ else if (actionName == "BOTTOMLINESAVE")
++ {
++ BUTTON(actionName, tr("Save manual zoom for BottomLine"));
++ }
+ else if (actionName == "TOGGLENIGHTMODE")
+ {
+ if (m_tvm_sup != kPictureAttributeSupported_None)
+@@ -12222,6 +12230,10 @@ bool TV::MenuItemDisplayPlayback(const MenuItemContext &c)
+ BUTTON2(actionName, tr("DVD Root Menu"), tr("Top menu"));
+ }
+ }
++ else if (actionName == "JUMPBKMRK")
++ {
++ BUTTON(actionName, tr("Jump to bookmark"));
++ }
+ else if (actionName == "JUMPTOPOPUPMENU")
+ {
+ if (m_tvm_isbd)
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..c9ec7fa
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,114 @@
+<mythmenu name="HOST_SETTINGS">
+ <button>
+ <type>MV_ACCESS_SETUP_MENU</type>
+ <text>Access</text>
+ <description>Manage which LinHES Settings can be used</description>
+ <action>EXEC mythinstall -s accesscontrol </action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_SETUP_MENU</type>
+ <text>Advanced</text>
+ <description>Manage various Advanced Settings</description>
+ <action>EXEC mythinstall -s advanced</action>
+ </button>
+
+ <button>
+ <type>MV_AUDIO_SETUP_MENU</type>
+ <text>Audio</text>
+ <description>Manage Audio drivers, cards &amp; devices</description>
+ <action>EXEC mythinstall -s sound </action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_X_SETUP_MENU</type>
+ <text>Display</text>
+ <description>Set the display resolution</description>
+ <action>EXEC mythinstall -s advancedX</action>
+ </button>
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Dynamic DNS</text>
+ <description>Manage your dyndns.com account</description>
+ <action>EXEC mythinstall -s ddns </action>
+ </button>
+
+ <button>
+ <type>MV_FILESHARES_MENU</type>
+ <text>File Sharing</text>
+ <description>Manage file sharing via NFS or SMB</description>
+ <action>EXEC mythinstall -s fileshare</action>
+ </button>
+
+ <button>
+ <type>MV_SYSTEM_SETUP_MENU</type>
+ <text>Host</text>
+ <description>Manage LinHES system type, pointer size &amp; MythWelcome</description>
+ <action>EXEC mythinstall -s hostype </action>
+ </button>
+
+ <button>
+ <type>MV_MISC_SETUP_MENU</type>
+ <text>Miscellaneous</text>
+ <description>Set timezone, shortcuts &amp; auto updates</description>
+ <action>EXEC mythinstall -s misc </action>
+ </button>
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Network</text>
+ <description>Manage network devices &amp; hostname</description>
+ <action>EXEC mythinstall -s network </action>
+ </button>
+
+ <button>
+ <type>MV_SOFTWARE_MENU</type>
+ <text>Programs</text>
+ <description>Manage programs for LinHES</description>
+ <action>EXEC mythinstall -s plugins,software </action>
+ </button>
+
+ <button>
+ <type>MV_IR_SETUP_MENU</type>
+ <text>Remotes</text>
+ <description>Manage remotes, receivers &amp; blasters</description>
+ <action>EXEC mythinstall -s ir </action>
+ </button>
+
+ <button>
+ <type>MV_SCREENSAVER_SETUP_MENU</type>
+ <text>Screensaver</text>
+ <description>Manage the Screensaver</description>
+ <action>EXEC mythinstall -s screensaver </action>
+ </button>
+
+ <button>
+ <type>MV_VNC_SETUP_MENU</type>
+ <text>Screen Sharing</text>
+ <description>Manage VNC and XVNC screen sharing</description>
+ <action>EXEC mythinstall -s vnc </action>
+ </button>
+
+ <button>
+ <type>MV_SHUTDOWN_SETUP_MENU</type>
+ <text>Shutdown</text>
+ <description>Set when to turn off LinHES</description>
+ <action>EXEC mythinstall -s sleep </action>
+ </button>
+<!-- disabled in the db so no need to show
+ <button>
+ <type>MV_USER_SETUP_MENU</type>
+ <text>User Accounts</text>
+ <description>Manage Users on LinHES</description>
+ <action>EXEC mythinstall -s user </action>
+ </button>
+-->
+ <button>
+ <type>MV_WEBACCESS_SETUP_MENU</type>
+ <text>Web Security</text>
+ <description>Manage local website security</description>
+ <action>EXEC mythinstall -s webuser </action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/dvd_backup.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/dvd_backup.xml
new file mode 100644
index 0000000..2647d81
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/dvd_backup.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="OPTICAL_DISK">
+
+ <button>
+ <type>DVD_RIP</type>
+ <text>Mirror DVD</text>
+ <description>Creates a mirror of your DVD</description>
+ <action>EXEC /usr/LH/bin/ripD_eject.sh m &amp;</action>
+ </button>
+
+ <button>
+ <type>DVD_RIP</type>
+ <text>ISO of DVD</text>
+ <description>Creates an ISO of your DVD</description>
+ <action>EXEC /usr/LH/bin/ripD_eject.sh i &amp;</action>
+ </button>
+
+ <button>
+ <type>DVD_RIP</type>
+ <text>High Quality</text>
+ <description>Creates a high quality MPEG4 of your DVD</description>
+ <action>EXEC /usr/LH/bin/ripD_eject.sh h &amp;</action>
+ </button>
+
+ <button>
+ <type>DVD_RIP</type>
+ <text>Normal Quality</text>
+ <description>Creates a normal quality MPEG4 of your DVD</description>
+ <action>EXEC /usr/LH/bin/ripD_eject.sh n &amp;</action>
+ </button>
+
+ <button>
+ <type>DVD_RIP</type>
+ <text>Low Quality</text>
+ <description>Creates a low quality MPEG4 of your DVD</description>
+ <action>EXEC /usr/LH/bin/ripD_eject.sh l &amp;</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/game.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/game.xml
new file mode 100644
index 0000000..293a9e6
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/game.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="GAME">
+
+ <button>
+ <type>GAME</type>
+ <text>MythGame</text>
+ <description>Play video games</description>
+ <action>PLUGIN mythgame</action>
+ <depends>mythgame</depends>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/info_menu.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/info_menu.xml
new file mode 100644
index 0000000..017f90b
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/info_menu.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="INFO">
+
+ <button>
+ <type>NEWS</type>
+ <text>News Feeds</text>
+ <description>Keep up with the news</description>
+ <action>PLUGIN mythnews</action>
+ <depends>mythnews</depends>
+ </button>
+
+ <button>
+ <type>MYTHTWITTER_TIMELINE</type>
+ <text>Twitter</text>
+ <description>Send and receive tweets</description>
+ <action>JUMP MythTwitter_Timeline</action>
+ <depends>mythtwitter</depends>
+ </button>
+
+ <button>
+ <type>WEATHER</type>
+ <text>Weather</text>
+ <action>PLUGIN mythweather</action>
+ <description>Local weather forecast</description>
+ <depends>mythweather</depends>
+ </button>
+
+ <button>
+ <type>WEATHER</type>
+ <text>Weather Station</text>
+ <action>PLUGIN mythwstation</action>
+ <depends>mythwstation</depends>
+ </button>
+
+ <button>
+ <type>WEBPAGE</type>
+ <text>Web</text>
+ <description>Browse the web</description>
+ <action>PLUGIN mythbrowser</action>
+ <depends>mythbrowser</depends>
+ </button>
+
+ <button>
+ <type>RECIPE</type>
+ <text>Recipes</text>
+ <description>Start cooking!</description>
+ <action>PLUGIN mythRecipe</action>
+ <depends>mythrecipe</depends>
+ </button>
+
+ <button>
+ <type>TV_STATUS</type>
+ <text>System Status</text>
+ <description>See what your system is doing</description>
+ <action>TV_STATUS</action>
+ </button>
+
+ <button>
+ <type>ZONEMINDER</type>
+ <text>ZoneMinder</text>
+ <description>Home surveillance</description>
+ <action>PLUGIN mythzoneminder</action>
+ <depends>mythzoneminder</depends>
+ </button>
+
+<!--
+ <button>
+ <type>SMOLT</type>
+ <text>Hardware profile</text>
+ <description>Tell us what hardware you have so we can support it</description>
+ <action>PLUGIN mythsmolt</action>
+ <depends>mythsmolt</depends>
+ </button>
+ -->
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/is.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/is.xml
new file mode 100644
index 0000000..19efc34
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/is.xml
@@ -0,0 +1,3 @@
+<mythmenu name="INTERNET_STREAMS">
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/lh_backend_control.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/lh_backend_control.xml
new file mode 100644
index 0000000..0b0cc17
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/lh_backend_control.xml
@@ -0,0 +1,24 @@
+<mythmenu name="LH_BACKEND">
+
+ <button>
+ <type></type>
+ <text>Start MythBackend</text>
+ <description>Start the Master MythBackend</description>
+ <action>EXEC lh_backend_control.sh start</action>
+ </button>
+
+ <button>
+ <type></type>
+ <text>Stop MythBackend</text>
+ <description>Stop the Master MythBackend</description>
+ <action>EXEC lh_backend_control.sh stop</action>
+ </button>
+
+ <button>
+ <type></type>
+ <text>Restart MythBackend</text>
+ <description>Restart the Master MythBackend</description>
+ <action>EXEC lh_backend_control.sh restart</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/stable-30/mythtv/menu-xml/library.xml.patch
new file mode 100644
index 0000000..0c0177a
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/library.xml.patch
@@ -0,0 +1,25 @@
+--- themes/defaultmenu/library.xml.orig 2014-11-26 20:21:35.092552944 +0000
++++ themes/defaultmenu/library.xml 2014-11-26 20:22:43.103983263 +0000
+@@ -56,6 +56,13 @@
+ </button>
+
+ <button>
++ <type>STREAM</type>
++ <text>Online Content</text>
++ <description>Play content from online sources</description>
++ <action>MENU gen_is.xml</action>
++ </button>
++
++ <button>
+ <type>IMAGES</type>
+ <text>Image Gallery</text>
+ <description>Look at Pictures</description>
+@@ -67,7 +74,7 @@
+ <type>GAME</type>
+ <text>Play Games</text>
+ <description>Play video games</description>
+- <action>PLUGIN mythgame</action>
++ <action>MENU game.xml</action>
+ <depends>mythgame</depends>
+ </button>
+
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes.xml
new file mode 100644
index 0000000..fe7640d
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes.xml
@@ -0,0 +1,70 @@
+<mythmenu name="LH_SERVICE_MENU">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>MythTV Settings</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configuración</text>
+ <text lang="DE">Zubehör / Konfiguration</text>
+ <text lang="DA">Tilbehør/Indstillinger</text>
+ <text lang="IS">Uppsetning</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Utensílios</text>
+ <text lang="SV">Verktyg / Inställningar</text>
+ <text lang="JA">設~Z</text>
+ <text lang="FI">Oheis/Asetukset</text>
+ <text lang="ZH_TW">工~E/設~Z</text>
+ <text lang="SL">Nastavitve</text>
+ <text lang="ET">Utiliidid / sätted</text>
+ <text lang="RU">У~Bили~B~K / ~]а~A~B~@ойки</text>
+ <text lang="AR">تضب~Jطات</text>
+ <text lang="PL">Narz~Ydzia / ustawienia</text>
+ <text lang="HE">ע~Vר~Y~] / ~T~R~Sר~Uת</text>
+ <text lang="HU">Eszközök / Beállítások</text>
+ <alttext lang="DE">Verschiedenes</alttext>
+ <alttext lang="SV">Inställningar</alttext>
+ <alttext lang="ET">Sätted</alttext>
+ <alttext lang="RU">~]а~A~B~@ойки</alttext>
+ <alttext lang="AR">تضب~Jطات</alttext>
+ <description>Configure MythTV and Plugins</description>
+ <description lang="DE">MythTV und Plugins konfigurieren</description>
+ <action>MENU util_menu.xml</action>
+ </button>
+
+ <button>
+ <type>LINHES_SETUP</type>
+ <text>LinHES Settings</text>
+ <description>Configure the LinHES System</description>
+ <action>MENU HOST_SETTINGS.xml</action>
+ </button>
+
+ <button>
+ <type>TOOLS</type>
+ <text>LinHES Tools</text>
+ <description>Utilities for LinHES System</description>
+ <action>MENU linhes_tools.xml</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Backup LinHES</text>
+ <description>Backup the LinHES System</description>
+ <action>MENU mythbackup.xml</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Restore LinHES</text>
+ <description>Restore the LinHES System</description>
+ <action>MENU mythrestore.xml</action>
+ </button>
+
+<!--#Check for updates-->
+ <button>
+ <type>UPGRADE</type>
+ <text>Update LinHES</text>
+ <description>Update the LinHES System</description>
+ <action>MENU update.xml</action>
+ </button>
+<!--#Check for updates-->
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes_tools.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes_tools.xml
new file mode 100644
index 0000000..feabe8e
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/linhes_tools.xml
@@ -0,0 +1,31 @@
+<mythmenu name="LH_TOOLS">
+
+ <button>
+ <type></type>
+ <text>Show Help</text>
+ <description>Display the LinHES help screen</description>
+ <action>EXEC mythinstall -H</action>
+ </button>
+
+ <button>
+ <type></type>
+ <text>Toggle Pointer</text>
+ <description>Show/Hide the mouse pointer</description>
+ <action>EXEC unclutter-toggle.sh</action>
+ </button>
+
+ <button>
+ <type></type>
+ <text>MythBackend</text>
+ <description>Start/Stop MythBackend</description>
+ <action>MENU lh_backend_control.xml</action>
+ </button>
+
+ <button>
+ <type></type>
+ <text>MythTV-Setup</text>
+ <description>Open mythtv-setup</description>
+ <action>EXEC mythtv-setup</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/stable-30/mythtv/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..3ddce0b
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,15 @@
+--- themes/defaultmenu/mainmenu.xml.orig 2014-09-02 20:03:34.658600292 +0000
++++ themes/defaultmenu/mainmenu.xml 2014-09-03 15:49:34.820056829 +0000
+@@ -45,9 +45,9 @@
+
+ <button>
+ <type>MENU_UTILITIES_SETUP</type>
+- <text>Setup</text>
+- <description>Configure MythTV and plugins</description>
+- <action>MENU main_settings.xml</action>
++ <text>Service Menu</text>
++ <description>Configure your system</description>
++ <action>MENU linhes.xml</action>
+ <password>SetupPinCode</password>
+ </button>
+
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/mythbackup.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/mythbackup.xml
new file mode 100644
index 0000000..176591b
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/mythbackup.xml
@@ -0,0 +1,22 @@
+<mythmenu name="LH_BACKUP">
+ <button>
+ <type>BACKUP</type>
+ <text>Backup Now?</text>
+ <description></description>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Yes</text>
+ <description>Start Backup</description>
+ <action>EXEC sudo /usr/LH/bin/lh_system_backup &amp;</action>
+ </button>
+
+ <button>
+ <type>JUMP_RELOAD_THEME</type>
+ <text>No</text>
+ <description>Return to Main Menu</description>
+ <action>JUMP Reload Theme</action>
+ </button>
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/mythrestore.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/mythrestore.xml
new file mode 100644
index 0000000..d37ba2b
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/mythrestore.xml
@@ -0,0 +1,24 @@
+<mythmenu name="LH_RESTORE">
+
+ <button>
+ <type>RESTORE</type>
+ <text>Restore Now?</text>
+ <description>Restore the database from the most recent backup</description>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Yes</text>
+ <description>Start Restore</description>
+ <action>EXEC sudo /usr/LH/bin/lh_system_restore &amp;</action>
+ </button>
+
+ <button>
+ <type>JUMP_RELOAD_THEME</type>
+ <text>No</text>
+ <description>Return to Main Menu</description>
+ <action>JUMP Reload Theme</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/optical_menu.xml.patch b/abs/core/mythtv/stable-30/mythtv/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..b836e85
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,23 @@
+--- themes/defaultmenu/optical_menu.xml.orig 2012-05-02 18:41:38.000000000 +0000
++++ themes/defaultmenu/optical_menu.xml 2012-07-30 05:33:03.000000000 +0000
+@@ -17,6 +17,20 @@
+ </button>
+
+ <button>
++ <type>DVD_RIP</type>
++ <text>Backup DVD</text>
++ <description>Backup your DVDs</description>
++ <action>MENU dvd_backup.xml</action>
++ </button>
++
++ <button>
++ <type>DVD_RIP</type>
++ <text>Import Files from DVD</text>
++ <description>Import all files from a data DVD</description>
++ <action>EXEC /usr/LH/bin/importfiles.sh &amp;</action>
++ </button>
++
++ <button>
+ <type>MUSIC_RIP</type>
+ <text>Import CD</text>
+ <description>Import music from an audio CD</description>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/original/create_patch.sh b/abs/core/mythtv/stable-30/mythtv/menu-xml/original/create_patch.sh
new file mode 100644
index 0000000..34d8b8c
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/original/create_patch.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+for i in *.xml
+do
+ diff -u $i.orig $i > ../$i.patch
+done
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/siriusmenu.xml.del b/abs/core/mythtv/stable-30/mythtv/menu-xml/siriusmenu.xml.del
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/siriusmenu.xml.del
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Hits 1</text>
+ <action>EXEC /usr/bin/cliSipie siriushits1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>StarLite</text>
+ <action>EXEC /usr/bin/cliSipie starlite</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Love</text>
+ <action>EXEC /usr/bin/cliSipie siriuslove</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Movin EZ</text>
+ <action>EXEC /usr/bin/cliSipie movineasy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Gold</text>
+ <action>EXEC /usr/bin/cliSipie siriusgold</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'60s Vibrations</text>
+ <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Totally '70s</text>
+ <action>EXEC /usr/bin/cliSipie totally70s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Big '80s</text>
+ <action>EXEC /usr/bin/cliSipie big80s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>ThePulse</text>
+ <action>EXEC /usr/bin/cliSipie thepulse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bridge</text>
+ <action>EXEC /usr/bin/cliSipie thebridge</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BBC Radio 1</text>
+ <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Super Shuffle</text>
+ <action>EXEC /usr/bin/cliSipie supershuffle</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Elvis Radio</text>
+ <action>EXEC /usr/bin/cliSipie elvisradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Vinyl</text>
+ <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Rewind</text>
+ <action>EXEC /usr/bin/cliSipie classicrewind</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>TheVault</text>
+ <action>EXEC /usr/bin/cliSipie thevault</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Jam_ON</text>
+ <action>EXEC /usr/bin/cliSipie jamon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spectrum</text>
+ <action>EXEC /usr/bin/cliSipie thespectrum</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BuzzSaw</text>
+ <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Octane</text>
+ <action>EXEC /usr/bin/cliSipie octane</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Alt Nation</text>
+ <action>EXEC /usr/bin/cliSipie altnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>1st Wave</text>
+ <action>EXEC /usr/bin/cliSipie firstwave</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hair Nation</text>
+ <action>EXEC /usr/bin/cliSipie hairnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'90s Alternative</text>
+ <action>EXEC /usr/bin/cliSipie 90salternative</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Garage</text>
+ <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left of Center</text>
+ <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hard Attack</text>
+ <action>EXEC /usr/bin/cliSipie hardattack</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Faction</text>
+ <action>EXEC /usr/bin/cliSipie faction</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Punk</text>
+ <action>EXEC /usr/bin/cliSipie punk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Coffee House</text>
+ <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Margaritaville</text>
+ <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Disorder</text>
+ <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Reggae</text>
+ <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Area 33</text>
+ <action>EXEC /usr/bin/cliSipie area33</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Boombox</text>
+ <action>EXEC /usr/bin/cliSipie boombox</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Chill</text>
+ <action>EXEC /usr/bin/cliSipie chill</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Beat</text>
+ <action>EXEC /usr/bin/cliSipie thebeat</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Strobe</text>
+ <action>EXEC /usr/bin/cliSipie thestrobe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hip-Hop Nation</text>
+ <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BackSpin</text>
+ <action>EXEC /usr/bin/cliSipie backspin</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Shade 45</text>
+ <action>EXEC /usr/bin/cliSipie shade45</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hot Jamz</text>
+ <action>EXEC /usr/bin/cliSipie hotjamz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Heart &amp; Soul</text>
+ <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>SoulTown</text>
+ <action>EXEC /usr/bin/cliSipie soultown</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>New Country</text>
+ <action>EXEC /usr/bin/cliSipie newcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Prime Country</text>
+ <action>EXEC /usr/bin/cliSipie primecountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Roadhouse</text>
+ <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Outlaw Country</text>
+ <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass</text>
+ <action>EXEC /usr/bin/cliSipie bluegrass</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/cliSipie spirit</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Praise</text>
+ <action>EXEC /usr/bin/cliSipie praise</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Planet Jazz</text>
+ <action>EXEC /usr/bin/cliSipie planetjazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>JazzCafe</text>
+ <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>PureJazz</text>
+ <action>EXEC /usr/bin/cliSipie purejazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spa 73</text>
+ <action>EXEC /usr/bin/cliSipie spa73</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blues</text>
+ <action>EXEC /usr/bin/cliSipie siriusblues</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Siriusly Sinatra</text>
+ <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Broadway's Best</text>
+ <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Symphony Hall</text>
+ <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Met Opera Radio</text>
+ <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Pops</text>
+ <action>EXEC /usr/bin/cliSipie siriuspops</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Universo Latino</text>
+ <action>EXEC /usr/bin/cliSipie universolatino</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Rumbon</text>
+ <action>EXEC /usr/bin/cliSipie rumbon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Martha Stewart</text>
+ <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Stars</text>
+ <action>EXEC /usr/bin/cliSipie siriusstars</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>OutQ Gay Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Patriot</text>
+ <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left</text>
+ <action>EXEC /usr/bin/cliSipie siriusleft</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>CNN</text>
+ <action>EXEC /usr/bin/cliSipie cnn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>wrn</text>
+ <action>EXEC /usr/bin/cliSipie wrn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blue Collar Comedy</text>
+ <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Raw Dog Comedy</text>
+ <action>EXEC /usr/bin/cliSipie rawdog</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh Break Comedy</text>
+ <action>EXEC /usr/bin/cliSipie laughbreak</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>thefoxxhole</text>
+ <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>lime</text>
+ <action>EXEC /usr/bin/cliSipie lime</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Kids Stuff</text>
+ <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Catholic Channel</text>
+ <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>EWTN</text>
+ <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>christiantalk</text>
+ <action>EXEC /usr/bin/cliSipie christiantalk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius NFL Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Maxim Radio</text>
+ <action>EXEC /usr/bin/cliSipie maximradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Cosmo Radio</text>
+ <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+ </button>
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/sipie_kill</action>
+ </button>
+
+</mythmenu>
+
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/update.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/update.xml
new file mode 100644
index 0000000..2d47e7d
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/update.xml
@@ -0,0 +1,11 @@
+<mythmenu name="LH_UPDATE">
+
+ <button>
+ <type>JUMP Reload Theme</type>
+ <text>Check for Updates</text>
+ <description>Search for LinHES system updates</description>
+ <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+ <action>JUMP Reload Theme</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/update2.xml b/abs/core/mythtv/stable-30/mythtv/menu-xml/update2.xml
new file mode 100644
index 0000000..4eee8cc
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/update2.xml
@@ -0,0 +1,25 @@
+<mythmenu name="LH_UPDATE">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Install Updates</text>
+ <description>Install updates for the LinHES system</description>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh install</action>
+ <action>JUMP Reload Theme</action>
+ </button>
+
+ <button>
+ <type>JUMP_RELOAD_THEME</type>
+ <text>Cancel Updates</text>
+ <description>Return to Main Menu</description>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+ <action>JUMP Reload Theme</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>View Updates</text>
+ <description>Displays the packages to be updated</description>
+ <action>MENU update3.xml</action>
+ </button>
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/menu-xml/xmmenu.xml.del b/abs/core/mythtv/stable-30/mythtv/menu-xml/xmmenu.xml.del
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/menu-xml/xmmenu.xml.del
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '40s</text>
+ <action>EXEC /usr/bin/xamp kill 4</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '50s</text>
+ <action>EXEC /usr/bin/xamp kill 5</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '60s</text>
+ <action>EXEC /usr/bin/xamp kill 6</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '70s</text>
+ <action>EXEC /usr/bin/xamp kill 7</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '80s</text>
+ <action>EXEC /usr/bin/xamp kill 8</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '90s</text>
+ <action>EXEC /usr/bin/xamp kill 9</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>America</text>
+ <action>EXEC /usr/bin/xamp kill 10</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>X Country</text>
+ <action>EXEC /usr/bin/xamp kill 12</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Willie's Place</text>
+ <action>EXEC /usr/bin/xamp kill 13</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass Junction</text>
+ <action>EXEC /usr/bin/xamp kill 14</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Village</text>
+ <action>EXEC /usr/bin/xamp kill 15</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Highway 16</text>
+ <action>EXEC /usr/bin/xamp kill 16</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>US Country</text>
+ <action>EXEC /usr/bin/xamp kill 17</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>20 on 20</text>
+ <action>EXEC /usr/bin/xamp kill 20</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heart</text>
+ <action>EXEC /usr/bin/xamp kill 23</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Blend</text>
+ <action>EXEC /usr/bin/xamp kill 25</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Flight 26</text>
+ <action>EXEC /usr/bin/xamp kill 26</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Cinemagic</text>
+ <action>EXEC /usr/bin/xamp kill 27</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On Broadway</text>
+ <action>EXEC /usr/bin/xamp kill 28</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>U-Pop</text>
+ <action>EXEC /usr/bin/xamp kill 29</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Hitlist</text>
+ <action>EXEC /usr/bin/xamp kill 30</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Torch</text>
+ <action>EXEC /usr/bin/xamp kill 31</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Message</text>
+ <action>EXEC /usr/bin/xamp kill 32</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/xamp kill 33</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>enLighten</text>
+ <action>EXEC /usr/bin/xamp kill 34</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Deep Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 40</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Boneyard</text>
+ <action>EXEC /usr/bin/xamp kill 41</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Liquid Metal</text>
+ <action>EXEC /usr/bin/xamp kill 42</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XMU</text>
+ <action>EXEC /usr/bin/xamp kill 43</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fred</text>
+ <action>EXEC /usr/bin/xamp kill 44</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Cafe</text>
+ <action>EXEC /usr/bin/xamp kill 45</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Top Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 46</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ethel</text>
+ <action>EXEC /usr/bin/xamp kill 47</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Squizz</text>
+ <action>EXEC /usr/bin/xamp kill 48</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Big Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 49</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Loft</text>
+ <action>EXEC /usr/bin/xamp kill 50</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Music Lab</text>
+ <action>EXEC /usr/bin/xamp kill 51</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Verge</text>
+ <action>EXEC /usr/bin/xamp kill 52</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fungus</text>
+ <action>EXEC /usr/bin/xamp kill 53</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Lucy</text>
+ <action>EXEC /usr/bin/xamp kill 54</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Soul Street</text>
+ <action>EXEC /usr/bin/xamp kill 60</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Flow</text>
+ <action>EXEC /usr/bin/xamp kill 61</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Suite 62</text>
+ <action>EXEC /usr/bin/xamp kill 62</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Groove</text>
+ <action>EXEC /usr/bin/xamp kill 64</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Rhyme</text>
+ <action>EXEC /usr/bin/xamp kill 65</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>RAW</text>
+ <action>EXEC /usr/bin/xamp kill 66</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The City</text>
+ <action>EXEC /usr/bin/xamp kill 67</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heat</text>
+ <action>EXEC /usr/bin/xamp kill 68</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Real Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 70</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Watercolors</text>
+ <action>EXEC /usr/bin/xamp kill 71</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Beyond Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 72</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>High Standards</text>
+ <action>EXEC /usr/bin/xamp kill 73</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluesville</text>
+ <action>EXEC /usr/bin/xamp kill 74</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Hear Music</text>
+ <action>EXEC /usr/bin/xamp kill 75</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fine Tuning</text>
+ <action>EXEC /usr/bin/xamp kill 76</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Audio Visions</text>
+ <action>EXEC /usr/bin/xamp kill 77</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Escape</text>
+ <action>EXEC /usr/bin/xamp kill 78</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On The Rocks</text>
+ <action>EXEC /usr/bin/xamp kill 79</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Move</text>
+ <action>EXEC /usr/bin/xamp kill 80</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>BPM</text>
+ <action>EXEC /usr/bin/xamp kill 81</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The System</text>
+ <action>EXEC /usr/bin/xamp kill 82</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Chrome</text>
+ <action>EXEC /usr/bin/xamp kill 83</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM-Chill</text>
+ <action>EXEC /usr/bin/xamp kill 84</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fuego</text>
+ <action>EXEC /usr/bin/xamp kill 90</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Viva</text>
+ <action>EXEC /usr/bin/xamp kill 91</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Aguila</text>
+ <action>EXEC /usr/bin/xamp kill 92</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Caliente</text>
+ <action>EXEC /usr/bin/xamp kill 94</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Luna</text>
+ <action>EXEC /usr/bin/xamp kill 95</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Air Musique</text>
+ <action>EXEC /usr/bin/xamp kill 100</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Joint</text>
+ <action>EXEC /usr/bin/xamp kill 101</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sur La Route</text>
+ <action>EXEC /usr/bin/xamp kill 102</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>World Zone</text>
+ <action>EXEC /usr/bin/xamp kill 103</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ngoma</text>
+ <action>EXEC /usr/bin/xamp kill 104</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Classics</text>
+ <action>EXEC /usr/bin/xamp kill 110</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Vox</text>
+ <action>EXEC /usr/bin/xamp kill 112</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Pops</text>
+ <action>EXEC /usr/bin/xamp kill 113</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Kids</text>
+ <action>EXEC /usr/bin/xamp kill 116</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bob Edwards Show</text>
+ <action>EXEC /usr/bin/xamp kill 133</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Comedy</text>
+ <action>EXEC /usr/bin/xamp kill 150</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh USA</text>
+ <action>EXEC /usr/bin/xamp kill 151</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Special X</text>
+ <action>EXEC /usr/bin/xamp kill 154</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Agenda</text>
+ <action>EXEC /usr/bin/xamp kill 134</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Oprah and Friends</text>
+ <action>EXEC /usr/bin/xamp kill 156</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Virus</text>
+ <action>EXEC /usr/bin/xamp kill 202</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>1 Hit Wonders</text>
+ <action>EXEC /usr/bin/xamp kill 300</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Metalcore</text>
+ <action>EXEC /usr/bin/xamp kill 301</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Indie First</text>
+ <action>EXEC /usr/bin/xamp kill 302</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Late Night Mix</text>
+ <action>EXEC /usr/bin/xamp kill 303</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sessions@AOL</text>
+ <action>EXEC /usr/bin/xamp kill 304</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Shuffle</text>
+ <action>EXEC /usr/bin/xamp kill 305</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Rock First</text>
+ <action>EXEC /usr/bin/xamp kill 306</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Country First</text>
+ <action>EXEC /usr/bin/xamp kill 307</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Hip Hop First</text>
+ <action>EXEC /usr/bin/xamp kill 308</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Pop First</text>
+ <action>EXEC /usr/bin/xamp kill 309</action>
+ </button>
+
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/xamp kill</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-30/mythtv/myth_settings.patch b/abs/core/mythtv/stable-30/mythtv/myth_settings.patch
new file mode 100644
index 0000000..aebff2a
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/myth_settings.patch
@@ -0,0 +1,1960 @@
+commit 0bfb6515f1c6f10d4d9d5d7297ca56a18ac3c138
+Author: James Meyer <james.meyer@operamail.com>
+Date: Sun Nov 17 18:58:50 2013 -0600
+
+ mythutil updated with myth_settings for .27
+
+diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
+index e9cc880..4f7a3bd 100644
+--- a/mythtv/libs/libmythbase/mythcorecontext.cpp
++++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
+@@ -1262,6 +1262,90 @@ void MythCoreContext::ResetLanguage(void)
+ d->language.clear();
+ }
+
++//JM ADDED
++void MythCoreContext::savesettings_togroup (QString src_hostname,
++ QString saved_settingsgroupname )
++{
++ return d->m_database->savesettings_togroup(src_hostname,
++ saved_settingsgroupname);
++}
++
++void MythCoreContext::deletesettings(QString delete_hostname,
++ QString saved_settingsgroupname)
++{
++ return d->m_database->deletesettings(delete_hostname,
++ saved_settingsgroupname);
++}
++
++QMap<QString,QStringList> MythCoreContext::list_settingsgroupname()
++{
++ return d->m_database->list_settingsgroupname();
++}
++
++QMap<QString,QStringList> MythCoreContext::diff_settingsgroupname(
++ QString diff_hostname1,
++ QString diff_hostname2,
++ QStringList table_list)
++{
++ return d->m_database->diff_settingsgroupname(diff_hostname1,
++ diff_hostname2,
++ table_list);
++}
++
++void MythCoreContext::clonesettings(QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool is_full_clone,
++ QString dest_hostname)
++{
++ return d->m_database->clonesettings(src_hostname,
++ saved_settingsgroupname,
++ table_list,
++ is_full_clone,
++ dest_hostname);
++}
++
++void MythCoreContext::restoresettings(QString dest_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list )
++{
++ return d->m_database->restoresettings( dest_hostname,
++ saved_settingsgroupname,
++ table_list);
++}
++
++void MythCoreContext::change_hostname(QString old_hostname,
++ QString new_hostname)
++{
++ return d->m_database->change_hostname(old_hostname, new_hostname) ;
++}
++
++bool MythCoreContext::settings_check(QString src_hostname,
++ QString saved_settingsgroupname)
++{
++ return d->m_database->settings_check(src_hostname,saved_settingsgroupname);
++}
++
++void MythCoreContext::import_settings(QMap<QString,QString> vp_map,
++ QString table)
++{
++ return d->m_database->import_settings(vp_map, table);
++}
++
++
++QMap<QString, QMap<QString,QString> > MythCoreContext::export_settings(
++ QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list, bool skip_host )
++{
++ return d->m_database->export_settings(src_hostname,
++ saved_settingsgroupname,
++ table_list , skip_host );
++}
++
++//END JM ADDED
++
++
+ void MythCoreContext::InitLocale(void )
+ {
+ if (!d->m_locale)
+diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
+index aed83d7..3f0de5e 100644
+--- a/mythtv/libs/libmythbase/mythcorecontext.h
++++ b/mythtv/libs/libmythbase/mythcorecontext.h
+@@ -240,6 +240,39 @@ class MBASE_PUBLIC MythCoreContext : pub
+ void emitTVPlaybackAborted(void) { emit TVPlaybackAborted(); }
+ void emitTVPlaybackPlaying(void) { emit TVPlaybackPlaying(); }
+
++ //JM ADDED
++ void savesettings_togroup(QString src_hostname,
++ QString saved_settingsgroupname );
++
++ void deletesettings(QString delete_hostname,
++ QString saved_settingsgroupname);
++
++ QMap<QString,QStringList> list_settingsgroupname();
++ QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
++ QString diff_hostname2,
++ QStringList table_list);
++
++ void clonesettings(QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool is_full_clone = true,
++ QString dest_hostname="");
++
++ void restoresettings (QString dest_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list);
++
++ void change_hostname (QString old_hostname, QString new_hostname);
++
++ bool settings_check (QString src_hostname ,QString saved_settingsgroupname);
++ void import_settings(QMap<QString,QString> vp_map, QString table);
++
++ QMap<QString,QMap <QString,QString> > export_settings(
++ QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool skip_host = false );
++ //END JM ADDED
+
+ signals:
+ void TVPlaybackStarted(void);
+diff --git a/mythtv/libs/libmythbase/mythdb.cpp b/mythtv/libs/libmythbase/mythdb.cpp
+index e60fce0..ed3bdf7 100644
+--- a/mythtv/libs/libmythbase/mythdb.cpp
++++ b/mythtv/libs/libmythbase/mythdb.cpp
+@@ -896,6 +896,1015 @@ void MythDB::WriteDelayedSettings(void)
+ }
+ }
+
++//JM ADDED
++void MythDB::savesettings_togroup(QString src_hostname,
++ QString saved_settingsgroupname )
++{
++ LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
++ .arg(src_hostname));
++ LOG(VB_GENERAL, LOG_ERR, QString("Saving to group: %1")
++ .arg(saved_settingsgroupname));
++ if ( settings_check( src_hostname , "current" ) )
++ {
++ QStringList table_list;
++ QString hostname_clause;
++ table_list.append("settings");
++ table_list.append("keybindings");
++ table_list.append("jumppoints");
++ if ( src_hostname == "GLOBAL" )
++ hostname_clause = "hostname IS NULL";
++ else
++ hostname_clause ="hostname = :HOSTNAME";
++
++ foreach (QString table, table_list)
++ {
++ QString dest_tablename = table +"_" + saved_settingsgroupname ;
++ create_new_table(dest_tablename,table);
++
++ QString query_string;
++ // Remove old saved values
++ MSqlQuery query(MSqlQuery::InitCon());
++ query_string = QString("DELETE FROM %1 WHERE %2")
++ .arg(dest_tablename)
++ .arg(hostname_clause);
++
++ //query_string = QString("DELETE FROM %1 WHERE "
++ // "hostname = :HOSTNAME").arg(dest_tablename);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" ,src_hostname);
++ query.exec();
++
++ //insert all new settings
++ query_string = QString("REPLACE INTO %1 "
++ "SELECT * from %2 where %3")
++ .arg(dest_tablename)
++ .arg(table)
++ .arg(hostname_clause);
++// query_string = QString("REPLACE INTO %1 "
++// "SELECT * from %2 where hostname = :HOSTNAME)")
++// .arg(dest_tablename)
++// .arg(table);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME",src_hostname);
++ query.exec();
++ }
++ }
++ else
++ LOG(VB_GENERAL| VB_STDIO|VB_FLUSH, LOG_ERR,
++ QString("Couldn't find settings for: %1 \n").arg(src_hostname));
++ return;
++
++};
++
++void MythDB::deletesettings(QString delete_hostname,
++ QString saved_settingsgroupname)
++{
++ LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
++ .arg(delete_hostname));
++ LOG(VB_GENERAL, LOG_ERR, QString("Deleting: %1")
++ .arg(saved_settingsgroupname));
++ int tempItem;
++ QString src_tablename;
++ QStringList table_list;
++
++ table_list.append("settings");
++ table_list.append("keybindings");
++ table_list.append("jumppoints");
++ QString hostname_clause;
++ if ( delete_hostname == "GLOBAL" )
++ hostname_clause = "hostname IS NULL";
++ else
++ hostname_clause ="hostname = :HOSTNAME";
++
++ foreach (QString table, table_list)
++ {
++ src_tablename = find_group_table_name(table, saved_settingsgroupname);
++ MSqlQuery query(MSqlQuery::InitCon());
++ // Remove old saved values
++ if ( does_table_exist(src_tablename))
++ {
++ QString query_string = QString("DELETE from %1 "
++ "WHERE %2")
++ .arg(src_tablename)
++ .arg(hostname_clause);
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" ,delete_hostname);
++ query.exec();
++
++ //check if ok to delete table
++ query_string = QString("SELECT count(*) from %1")
++ .arg(src_tablename);
++ query.prepare(query_string);
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ query.next();
++ tempItem = query.value(0).toInt();
++ if ( tempItem == 0 )
++ drop_temp_table(src_tablename);
++ }
++ }
++ else
++ LOG(VB_GENERAL, LOG_ERR,
++ QString("Couldn't find table: %1").arg(src_tablename));
++ }
++ return;
++}; // end delete settings
++
++
++QMap<QString,QStringList> MythDB::list_settingsgroupname()
++{
++ //Returns a QMAP of "settings_groups: hostname"
++ MSqlQuery query(MSqlQuery::InitCon());
++ MSqlQuery subquery(MSqlQuery::InitCon());
++ QString tempItem;
++ QString temp_hostnameItem;
++ QStringList hostname_list;
++ QMap<QString,QStringList> return_list;
++ QString full_table_name;
++ query.prepare( "show tables like \"settings%\" " );
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ full_table_name = query.value(0).toString();
++ tempItem=query.value(0).toString().remove(QRegExp("settings_"));
++ if ( tempItem != "distro_default" )
++ {
++ //loop over tables looking for hostnames
++ QString query_string = QString("SELECT DISTINCT "
++ "hostname from %1")
++ .arg(full_table_name);
++ subquery.prepare(query_string);
++
++ if (subquery.exec() && subquery.isActive()
++ && subquery.size() > 0)
++ {
++ while (subquery.next())
++ {
++ temp_hostnameItem = subquery.value(0).toString();
++ hostname_list.append(temp_hostnameItem);
++ }
++ }
++ //Special case of naming for the settings table;
++ //This only affects output.
++ if ( tempItem == "settings" )
++ return_list["current"] = hostname_list;
++ else
++ return_list[tempItem] = hostname_list;
++
++ //reset hostname_list for the next group
++ hostname_list = QStringList();
++ }
++ }
++ }
++ return return_list;
++}; // end list_settingsgroupname
++
++QMap<QString,QStringList> MythDB::diff_settingsgroupname(
++ QString diff_hostname1 ,
++ QString diff_hostname2,
++ QStringList table_list )
++{
++ // Returns a QMAP of tablename : diff results
++ LOG(VB_GENERAL, LOG_ERR, QString("Comparing settings for:"));
++ LOG(VB_GENERAL, LOG_ERR, QString("host 1: %1").arg(diff_hostname1));
++ LOG(VB_GENERAL, LOG_ERR, QString("host 2: %1").arg(diff_hostname2));
++
++ QString qstr;
++ QString tempItem;
++ QString tempString;
++
++ QStringList diff_list;
++ QStringList settings_list;
++ QStringList keybinding_list;
++
++ QMap<QString,QStringList> return_list;
++ if ( table_list.isEmpty() )
++ {
++ table_list.append("settings");
++ table_list.append("keybindings");
++ }
++
++ MSqlQuery query(MSqlQuery::InitCon());
++ foreach (QString table, table_list)
++ {
++ if ( table == "settings")
++ {
++
++ qstr= "SELECT distinct settings.value, :DIFF_HOSTNAME1 AS `hostname`, settings_a.data, :DIFF_HOSTNAME2 AS `hostname`"
++ " , settings_b.data FROM settings LEFT JOIN settings AS settings_a ON settings_a.value = settings.value AND settings_a.hostname = :DIFF_HOSTNAME1"
++ " LEFT JOIN settings AS settings_b ON settings_b.value = settings.value AND settings_b.hostname = :DIFF_HOSTNAME2"
++ " WHERE settings_a.data != settings_b.data OR "
++ " (settings_a.data IS NULL AND settings_b.data IS NOT NULL) OR (settings_a.data IS NOT NULL AND settings_b.data IS NULL);";
++
++ query.prepare(qstr);
++ query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
++ query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
++
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ tempString="";
++ //value
++ tempItem = query.value(0).toString();
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //hostname_1
++ tempItem = query.value(1).toString();
++ if (tempItem.isEmpty())
++ tempItem=diff_hostname1;
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //data
++ tempItem = query.value(2).toString();
++ if (tempItem.isEmpty())
++ tempItem="NULL";
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //hostname_2
++ tempItem = query.value(3).toString();
++ if (tempItem.isEmpty())
++ tempItem=diff_hostname2;
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //data
++ tempItem = query.value(4).toString();
++ if (tempItem.isEmpty())
++ tempItem="NULL";
++ tempString.append(tempItem);
++
++ settings_list.append(tempString);
++ }
++ return_list["Settings"] = settings_list;
++ }
++ }
++ else if ( table == "keybindings")
++ {
++
++ qstr="SELECT distinct keybindings.context, keybindings.action, :DIFF_HOSTNAME1 AS `hostname`, keybindings_a.keylist, :DIFF_HOSTNAME2 AS `hostname`, keybindings_b.keylist FROM keybindings "
++ " LEFT JOIN keybindings AS keybindings_a ON keybindings_a.context = keybindings.context AND keybindings_a.action = keybindings.action "
++ " AND keybindings_a.hostname = :DIFF_HOSTNAME1 "
++ " LEFT JOIN keybindings AS keybindings_b ON keybindings_b.context = keybindings.context "
++ " AND keybindings_b.action = keybindings.action AND keybindings_b.hostname = :DIFF_HOSTNAME2 "
++ " WHERE keybindings_a.keylist != keybindings_b.keylist OR "
++ " (keybindings_a.keylist IS NULL AND keybindings_b.keylist IS NOT NULL) OR (keybindings_a.keylist IS NOT NULL AND keybindings_b.keylist IS NULL);";
++ query.prepare(qstr);
++ query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
++ query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
++
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ tempString="";
++ //context
++ tempItem = query.value(0).toString();
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //action
++ tempItem = query.value(1).toString();
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //hostname
++ tempItem = query.value(2).toString();
++ if (tempItem.isEmpty())
++ tempItem=diff_hostname1;
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //keylist
++ tempItem = query.value(3).toString();
++ if (tempItem.isEmpty())
++ tempItem="NULL";
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //hostname
++ tempItem = query.value(4).toString();
++ if (tempItem.isEmpty())
++ tempItem=diff_hostname2;
++ tempString.append(tempItem);
++ tempString.append("|");
++
++ //keylist
++ tempItem = query.value(5).toString();
++ if (tempItem.isEmpty())
++ tempItem="NULL";
++ tempString.append(tempItem);
++ keybinding_list.append(tempString);
++ }
++ return_list["Keybindings"] = keybinding_list;
++ }
++ }
++
++ }
++ return return_list;
++}; //end diff_settingsgroupname
++
++void MythDB::clonesettings(QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool is_full_clone, QString dest_hostname)
++{
++ LOG(VB_GENERAL, LOG_ERR, QString("Using src hostname of : %1")
++ .arg(src_hostname));
++ LOG(VB_GENERAL, LOG_ERR, QString("Using dest hostname of : %1")
++ .arg(dest_hostname));
++ LOG(VB_GENERAL, LOG_ERR, QString("Cloning setting group: %1")
++ .arg(saved_settingsgroupname));
++ LOG(VB_GENERAL, LOG_ERR, QString("Full Copy : %1")
++ .arg(is_full_clone));
++
++ MSqlQuery query(MSqlQuery::InitCon());
++ QStringList::Iterator it;
++ QString current_table;
++ QString dest_tablename;
++ QString temptable;
++
++ if ( table_list.isEmpty() )
++ {
++ table_list.append("settings");
++ table_list.append("keybindings");
++ table_list.append("jumppoints");
++ }
++
++ for ( it = table_list.begin(); it != table_list.end(); ++it )
++ {
++ current_table = *it ;
++ dest_tablename = find_group_table_name(current_table,
++ saved_settingsgroupname);
++
++ if ( does_table_exist(dest_tablename))
++ {
++ // create temp table for merging settings
++ temptable="temp_table_" + dest_tablename;
++ create_temp_table(temptable, current_table );
++
++ // copy in stored settings
++ QString query_string = QString("REPLACE INTO %1 "
++ "(SELECT * from %2 where hostname = :HOSTNAME)")
++ .arg(temptable)
++ .arg(dest_tablename);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME",src_hostname );
++ query.exec();
++
++ // update hostname for dest_hostname
++ query_string = QString("UPDATE %1 set hostname = :HOSTNAME")
++ .arg(temptable);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" , dest_hostname );
++ query.exec();
++
++ //if not full clone remove HOST% settings from temp table;
++ if ( current_table == "settings" && !is_full_clone)
++ {
++ query_string = QString("DELETE FROM %1 WHERE "
++ "hostname=:HOSTNAME and value like 'HOST%' " )
++ .arg(temptable);
++
++ query.prepare(query_string);
++ query.bindValue( ":HOSTNAME" , dest_hostname );
++ query.exec();
++ }
++
++ //remove current settings from dest table,
++ //if not full clone, then leave HOST%
++ //Need to remove because the old table allows for duplicates
++
++ if ( current_table == "settings" && !is_full_clone)
++ query_string = QString ("DELETE FROM %1 WHERE "
++ "hostname = :HOSTNAME "
++ "and value not like 'HOST%'")
++ .arg(dest_tablename);
++
++ else
++ query_string = QString ("DELETE FROM %1 WHERE "
++ "hostname = :HOSTNAME ")
++ .arg(dest_tablename);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME",dest_hostname);
++ query.exec();
++
++ // copy new settings from temp to current
++ query_string = QString("REPLACE INTO %1 "
++ "(SELECT * from %2)")
++ .arg(dest_tablename)
++ .arg(temptable);
++
++ query.prepare(query_string);
++ query.exec();
++
++ // drop temptable
++ drop_temp_table(temptable);
++ }
++ else
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
++ .arg(dest_tablename));
++ }
++}; //end clonesettings
++
++void MythDB::restoresettings (QString dest_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list )
++{
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Restoring Settings:"));
++ LOG(VB_GENERAL, LOG_NOTICE, QString(" src: %1")
++ .arg(saved_settingsgroupname));
++ LOG(VB_GENERAL, LOG_NOTICE, QString(" dest:%1")
++ .arg(dest_hostname));
++
++ QString hostname_clause;
++ if ( dest_hostname == "GLOBAL" )
++ hostname_clause = "hostname IS NULL";
++ else
++ hostname_clause ="hostname = :HOSTNAME";
++
++ bool table_check;
++ if ( saved_settingsgroupname == "distro_default" )
++ table_check = settings_check ( "distro_default" , saved_settingsgroupname );
++ else
++ table_check = settings_check ( dest_hostname , saved_settingsgroupname );
++
++
++ if ( table_check == true )
++ {
++ MSqlQuery query(MSqlQuery::InitCon());
++ QStringList::Iterator it;
++ QString current_table;
++ if ( table_list.isEmpty() )
++ {
++ table_list.append("settings");
++ table_list.append("keybindings");
++ table_list.append("jumppoints");
++ }
++
++ for ( it = table_list.begin(); it != table_list.end(); ++it )
++ {
++ current_table = *it ;
++ //find tablenames to use
++ QString src_tablename = find_group_table_name(current_table,
++ saved_settingsgroupname);
++
++ QString temptable="temp_table_" + src_tablename;
++ if ( ! does_table_exist(src_tablename))
++ {
++ LOG(VB_GENERAL, LOG_NOTICE, QString("table does not exist: %1")
++ .arg(src_tablename));
++ continue;
++ }
++ // create temp table for merging settings
++ create_temp_table(temptable, current_table );
++
++ //could copy in current settings here to account for new stuff
++
++
++
++ // copy in stored settings
++ QString query_string;
++ if ( saved_settingsgroupname == "distro_default" )
++ { //special case for restoring default settings
++ query_string = QString("REPLACE INTO %1 "
++ "(SELECT * from %2 WHERE %3)")
++ .arg(temptable)
++ .arg(src_tablename)
++ .arg(hostname_clause);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME", "distro_default" );
++ query.exec();
++
++ // update hostname in temp table from distro_default
++ query_string = QString("UPDATE %1 set hostname = :HOSTNAME")
++ .arg(temptable);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" , dest_hostname );
++ query.exec();
++
++ }
++ else
++ { //normal use case
++ query_string = QString("REPLACE INTO %1 "
++ "(SELECT * from %2 WHERE %3)")
++ .arg(temptable)
++ .arg(src_tablename)
++ .arg(hostname_clause);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME",dest_hostname );
++ query.exec();
++ }
++
++ //Remove current settings.
++ //Need to remove because the old table allows for duplicates
++ query_string = QString("DELETE FROM %1 WHERE "
++ "%2")
++ .arg(current_table)
++ .arg(hostname_clause);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME",dest_hostname);
++ query.exec();
++
++ // copy new settings from temp to current
++ query_string = QString("REPLACE INTO %1 "
++ "(SELECT * from %2)")
++ .arg(current_table)
++ .arg(temptable);
++
++ query.prepare(query_string);
++ query.exec();
++ // drop temptable
++ drop_temp_table(temptable);
++ }
++ }
++}; //end restore settings
++
++void MythDB::change_hostname (QString old_hostname, QString new_hostname)
++{
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Changing hostname from %1 -> %2")
++ .arg(old_hostname)
++ .arg(new_hostname));
++
++ MSqlQuery query(MSqlQuery::InitCon());
++ MSqlQuery sub_query(MSqlQuery::InitCon());
++ query.prepare( "SHOW TABLES" );
++
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ QString table_name = query.value(0).toString();
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Scanning %1")
++ .arg(table_name));
++
++ // LOOP OVER TABLES, CHECK IF IT HAS A HOSTNAME FIELD
++ QString query_string=QString("SHOW COLUMNS from %1 "
++ "where field='hostname'")
++ .arg(table_name);
++ sub_query.prepare(query_string);
++
++ if (sub_query.exec() && sub_query.size() > 0)
++ { //update hostname
++ LOG(VB_GENERAL, LOG_NOTICE, QString(" Updating hostname in: %1")
++ .arg(table_name));
++ query_string = QString("UPDATE %1 SET hostname = :NEW_HOSTNAME "
++ "WHERE hostname = :OLD_HOSTNAME")
++ .arg(table_name);
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":NEW_HOSTNAME" , new_hostname);
++ sub_query.bindValue(":OLD_HOSTNAME" , old_hostname);
++ sub_query.exec();
++ }
++ }
++ }
++
++
++
++
++
++
++}
++
++bool MythDB::settings_check(QString src_hostname,
++ QString saved_settingsgroupname)
++{
++ int tempItem;
++ bool returncode = false ;
++ QString table="settings";
++
++ QString tablename = find_group_table_name(table, saved_settingsgroupname);
++ QString hostname_clause;
++ if ( src_hostname == "GLOBAL" )
++ hostname_clause = "hostname IS NULL";
++ else
++ hostname_clause ="hostname = :HOSTNAME";
++
++ if (does_table_exist (tablename))
++ {
++ MSqlQuery query(MSqlQuery::InitCon());
++ QString query_string = QString("SELECT COUNT(data) from %1 "
++ "WHERE %2")
++ .arg(tablename)
++ .arg(hostname_clause);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" , src_hostname );
++
++ if (query.exec() && query.isActive() && query.size() > 0 )
++ {
++ while (query.next())
++ {
++ tempItem = query.value(0).toInt();
++ if ( tempItem >= 1 )
++ returncode = true;
++ else
++ {
++ LOG(VB_GENERAL, LOG_NOTICE,
++ QString("Group %1 does not contain"
++ " valid settings")
++ .arg(saved_settingsgroupname));
++ }
++ }
++ }
++ }
++ else
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
++ .arg(tablename));
++ return returncode;
++}; // end settings_check
++
++void MythDB::import_settings(QMap<QString,QString> vp_map,
++ QString table)
++{
++ MSqlQuery query(MSqlQuery::InitCon());
++
++ //IMPORT SETTINGS TABLE
++ if (table.startsWith("settings"))
++ {
++ if ( table != "settings" )
++ create_new_table(table,"settings");
++ QString hostname = vp_map.value("hostname");
++ QString value = vp_map.value("value");
++ QString data = vp_map.value("data");
++
++ QString hostname_clause;
++ QVariant import_hostname = QVariant(QVariant::String);
++
++ if ( hostname.isEmpty())
++ hostname_clause = "hostname IS NULL";
++ else
++ {
++ hostname_clause ="hostname = :HOSTNAME";
++ import_hostname = hostname;
++ }
++
++ QString query_string=QString("SELECT value, data, hostname "
++ "FROM %1 "
++ "WHERE %2 AND value = :VALUE "
++ "ORDER BY value")
++ .arg(table)
++ .arg(hostname_clause);
++
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME", hostname);
++ query.bindValue(":VALUE", value);
++
++ // if already exisiting records then update, otherwise insert
++ if (query.exec() && query.isActive())
++ {
++ MSqlQuery sub_query(MSqlQuery::InitCon());
++ if ( query.size() > 0 )
++ {
++ query_string = QString("UPDATE "
++ "%1 "
++ "set data = :DATA "
++ "WHERE %2 AND "
++ "value = :VALUE ")
++ .arg(table)
++ .arg(hostname_clause);
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", import_hostname);
++ sub_query.bindValue(":VALUE", value);
++ sub_query.bindValue(":DATA", data);
++ sub_query.exec();
++ }
++ else
++ {
++ query_string = QString("INSERT INTO "
++ " %1 "
++ "(value,data,hostname) "
++ "VALUES ( :VALUE , :DATA , :HOSTNAME)").arg(table);
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", import_hostname);
++ sub_query.bindValue(":VALUE", value);
++ sub_query.bindValue(":DATA", data);
++ sub_query.exec();
++ }
++ }
++ }
++ //KEYBINDINGS TABLE
++ else if (table.startsWith("keybindings"))
++ {
++ if ( table != "keybindings" )
++ create_new_table(table,"keybindings");
++ QString hostname = vp_map.value("hostname");
++ QString context = vp_map.value("context");
++ QString action = vp_map.value("action");
++ QString description = vp_map.value("description");
++ QString keylist = vp_map.value("keylist");
++
++ QString query_string=QString("SELECT context,action,hostname "
++ "FROM %1 "
++ "WHERE hostname = :HOSTNAME AND "
++ "context = :CONTEXT "
++ "AND action = :ACTION ").arg(table);
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME", hostname);
++ query.bindValue(":CONTEXT", context);
++ query.bindValue(":ACTION", action);
++
++ if (query.exec() && query.isActive())
++ {
++ MSqlQuery sub_query(MSqlQuery::InitCon());
++ if ( query.size() > 0 )
++ {
++ query_string = QString("UPDATE "
++ " %1 "
++ "set keylist = :KEYLIST "
++ "WHERE hostname = :HOSTNAME AND "
++ "context = :CONTEXT "
++ "AND action = :ACTION ").arg(table);
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", hostname);
++ sub_query.bindValue(":KEYLIST", keylist);
++ sub_query.bindValue(":CONTEXT", context);
++ sub_query.bindValue(":ACTION", action);
++ sub_query.exec();
++ }
++ else
++ {
++ query_string = QString("INSERT INTO "
++ " %1 "
++ " (context , action , description , keylist , hostname) "
++ " VALUES( "
++ " :CONTEXT ,"
++ " :ACTION , "
++ " :DESCRIPTION , "
++ " :KEYLIST , "
++ " :HOSTNAME)").arg(table) ;
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", hostname);
++ sub_query.bindValue(":KEYLIST", keylist);
++ sub_query.bindValue(":CONTEXT", context);
++ sub_query.bindValue(":ACTION", action);
++ sub_query.bindValue(":DESCRIPTION", description);
++ sub_query.exec();
++ }
++ }
++ }
++ //JUMP POINTS
++ else if (table.startsWith("jumppoints"))
++ {
++ if ( table != "jumppoints" )
++ create_new_table(table,"jumppoints");
++ QString hostname = vp_map.value("hostname");
++ QString description = vp_map.value("description");
++ QString destination = vp_map.value("destination");
++ QString keylist = vp_map.value("keylist");
++
++ QString query_string=QString("SELECT destination, keylist "
++ "FROM %1 "
++ "WHERE hostname = :HOSTNAME AND "
++ "destination = :DESTINATION "
++ "AND keylist = :KEYLIST ").arg(table);
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME", hostname);
++ query.bindValue(":DESTINATION", destination);
++ query.bindValue(":KEYLIST", keylist);
++
++ if (query.exec() && query.isActive())
++ {
++ MSqlQuery sub_query(MSqlQuery::InitCon());
++ if ( query.size() > 0 )
++ {
++ query_string = QString("UPDATE "
++ " %1 "
++ "set keylist = :KEYLIST "
++ "WHERE hostname = :HOSTNAME AND "
++ "destination = :DESTINATION ").arg(table);
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", hostname);
++ sub_query.bindValue(":KEYLIST", keylist);
++ sub_query.bindValue(":DESTINATION", destination);
++ sub_query.exec();
++ }
++ else
++ {
++ query_string = QString("INSERT INTO "
++ " %1 "
++ " (description , destination, keylist , hostname) "
++ " VALUES( "
++ " :DESCRIPTION ,"
++ " :DESTINATION , "
++ " :KEYLIST , "
++ " :HOSTNAME)").arg(table) ;
++
++ sub_query.prepare(query_string);
++ sub_query.bindValue(":HOSTNAME", hostname);
++ sub_query.bindValue(":KEYLIST", keylist);
++ sub_query.bindValue(":DESTINATION", destination);
++ sub_query.bindValue(":DESCRIPTION", description);
++ sub_query.exec();
++ }
++ }
++ }
++}; //end import_settings
++
++QMap<QString, QMap<QString,QString> >
++ MythDB::export_settings(QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list, bool skip_host )
++{
++ QMap<QString, QMap<QString,QString> > result_set;
++ QStringList::Iterator it;
++ QString current_table;
++ int record_count = 0;
++
++ if ( table_list.isEmpty() )
++ {
++ table_list.append("settings");
++ table_list.append("keybindings");
++ table_list.append("jumppoints");
++ }
++
++ MSqlQuery query(MSqlQuery::InitCon());
++ QString query_string;
++
++ //loop over tablelist
++ for ( it = table_list.begin(); it != table_list.end(); ++it )
++ {
++ current_table = *it ;
++ QString sub_sql;
++ QStringList fields;
++ QString field_query;
++
++ QString table_name = find_group_table_name(current_table,
++ saved_settingsgroupname);
++
++ QString hostname_clause;
++ if ( src_hostname == "GLOBAL" )
++ hostname_clause = "hostname IS NULL";
++ else
++ hostname_clause ="hostname = :HOSTNAME";
++
++ // find field names
++ query_string = QString("SHOW COLUMNS from %1").arg(table_name);
++ query.prepare(query_string);
++
++ //build up field name vars
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ if (! field_query.isEmpty())
++ field_query +=',';
++ QString tempItem = query.value(0).toString();
++ fields.append(tempItem);
++ field_query += tempItem;
++ }
++ }
++ // when working with settings table skip HOST if skip_host is true
++ if ( current_table == "settings" && skip_host == true )
++ {
++ QString skip_host_clause;
++ skip_host_clause = " VALUE not like 'HOST%' AND DATA not like 'HardwareProfile%UUID'" ;
++ query_string = QString("SELECT %1 FROM %2 WHERE %3 AND %4")
++ .arg(field_query)
++ .arg(table_name)
++ .arg(hostname_clause)
++ .arg(skip_host_clause);
++
++ }
++ else
++ {
++ query_string = QString("SELECT %1 FROM %2 WHERE %3")
++ .arg(field_query)
++ .arg(table_name)
++ .arg(hostname_clause);
++ }
++ query.prepare(query_string);
++ query.bindValue(":HOSTNAME" , src_hostname);
++
++ //looping over each record in the table query
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ //construct qmap of elements
++ //add table name
++ QMap<QString,QString> value_pair;
++ value_pair["table"]=table_name;
++
++ for ( int i=0 ; i < fields.size();i++ )
++ {
++ QString tempvalue = fields[i];
++ QString tempItem = query.value(i).toString();
++ value_pair[tempvalue]=tempItem;
++ }
++ result_set[QString(record_count)] = value_pair;
++ record_count++;
++ }
++ }
++
++ } // end table loop
++ return result_set;
++}; //end export_settings
++
++
++void MythDB::create_new_table (QString create_table_name,QString like_name)
++{
++ if ( ! does_table_exist(create_table_name))
++ {
++ MSqlQuery query(MSqlQuery::InitCon());
++ QString query_string = QString("CREATE TABLE %1 like %2")
++ .arg(create_table_name)
++ .arg(like_name);
++
++ query.prepare(query_string);
++ query.exec();
++ }
++ else
++ LOG(VB_GENERAL, LOG_NOTICE, QString("Table is already present,"
++ "will not create it: %1")
++ .arg(create_table_name));
++};
++
++
++void MythDB::drop_temp_table (QString table_name)
++{
++ MSqlQuery query(MSqlQuery::InitCon());
++ if (table_name == "settings" | table_name == "keybindings" | table_name == "jumppoints")
++ return;
++ QString query_string = QString("DROP TABLE %1").arg(table_name);
++ query.prepare(query_string);
++ query.exec();
++ return;
++}
++
++void MythDB::create_temp_table (QString create_table_name,QString like_name)
++{
++ MSqlQuery query(MSqlQuery::InitCon());
++ create_new_table(create_table_name,like_name);
++ QString query_string;
++ if ( like_name == "settings")
++ {
++ query_string = QString ("ALTER TABLE %1 ADD UNIQUE( value)")
++ .arg(create_table_name);
++ query.prepare(query_string);
++ query.exec();
++ }
++
++ query_string = QString("TRUNCATE %1").arg(create_table_name);
++ query.prepare(query_string);
++ query.exec();
++ return;
++}
++
++bool MythDB::does_table_exist(QString table_name)
++{
++ bool table_exist = false;
++ QString full_table_name;
++ MSqlQuery query(MSqlQuery::InitCon());
++
++ query.prepare( "SHOW TABLES" );
++ if (query.exec() && query.isActive() && query.size() > 0)
++ {
++ while (query.next())
++ {
++ full_table_name = query.value(0).toString();
++ if (table_name == full_table_name)
++ {
++ table_exist = true;
++ break;
++ }
++ }
++ }
++ return table_exist;
++};
++
++
++QString MythDB::find_group_table_name(QString current_table,
++ QString saved_settingsgroupname)
++{
++ QString table_name;
++ if ( saved_settingsgroupname.toLower() == "current" )
++ table_name = current_table ;
++ else
++ table_name = current_table + "_" + saved_settingsgroupname ;
++
++ return table_name;
++};
++//END JM ADDED
++
+ /**
+ * \brief Set a flag indicating we have successfully connected to the database
+ */
+diff --git a/mythtv/libs/libmythbase/mythdb.h b/mythtv/libs/libmythbase/mythdb.h
+index ac2a8ec..f3689a5 100644
+--- a/mythtv/libs/libmythbase/mythdb.h
++++ b/mythtv/libs/libmythbase/mythdb.h
+@@ -74,6 +74,49 @@ class MBASE_PUBLIC MythDB
+
+ void WriteDelayedSettings(void);
+
++ //JM ADDED
++ void savesettings_togroup(QString src_hostname,
++ QString saved_settingsgroupname );
++ void deletesettings(QString delete_hostname,
++ QString saved_settingsgroupname);
++
++ QMap<QString,QStringList> list_settingsgroupname();
++
++ QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
++ QString diff_hostname2,
++ QStringList table_list);
++
++ void clonesettings(QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool is_full_clone = true,
++ QString dest_hostname="");
++
++ void restoresettings (QString dest_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list);
++
++ void change_hostname (QString old_hostname, QString new_hostname);
++ bool settings_check (QString src_hostname, QString saved_settingsgroupname);
++ void import_settings(QMap<QString,QString> vp_map, QString table);
++
++
++ QMap<QString,QMap <QString,QString> > export_settings(
++ QString src_hostname,
++ QString saved_settingsgroupname,
++ QStringList table_list,
++ bool skip_host = false);
++
++ void create_new_table (QString create_table_name,QString like_name);
++ void drop_temp_table (QString table_name);
++ void create_temp_table (QString create_table_name,QString like_name);
++ bool does_table_exist(QString table_name);
++ QString find_group_table_name(QString current_table,
++ QString saved_settingsgroupname);
++ //END JM ADDED
++
++
++
+ void SetHaveDBConnection(bool connected);
+ void SetHaveSchema(bool schema);
+ bool HaveSchema(void) const;
+diff --git a/mythtv/programs/mythutil/commandlineparser.cpp b/mythtv/programs/mythutil/commandlineparser.cpp
+index 902314d..d86b548 100644
+--- a/mythtv/programs/mythutil/commandlineparser.cpp
++++ b/mythtv/programs/mythutil/commandlineparser.cpp
+@@ -144,6 +144,37 @@ void MythUtilCommandLineParser::LoadArguments(void)
+ << add("--print-notification-template", "printntemplate", false,
+ "Print the template to be sent to the frontend", "")
+ ->SetGroup("Messaging")
++
++ //settingsutil.cpp
++ << add("--save-settings", "savesettings", false,
++ "Save current settings", "")
++ ->SetGroup("Settings")
++ << add("--delete-settings", "deletesettings", false,
++ "Delete current settings", "")
++ ->SetGroup("Settings")
++ << add("--restore-settings", "restoresettings", false,
++ "Restore settings from previous backup", "")
++ ->SetGroup("Settings")
++ << add("--list-groups", "listgroups", false,
++ "List hosts and groups of settings", "")
++ ->SetGroup("Settings")
++ << add("--copy-settings", "copysettings", false,
++ "Copy or Clone settings from one host to another", "")
++ ->SetGroup("Settings")
++ << add("--diff-settings", "diffsettings", false,
++ "Show settings that are different between two hosts", "")
++ ->SetGroup("Settings")
++ << add("--change-hostname", "changehostname", false,
++ "Change the hostname", "")
++ ->SetGroup("Settings")
++ << add("--import-settings", "importsettings", false,
++ "import settings", "")
++ ->SetRequiredChild("infile")
++
++ << add("--export-settings", "exportsettings", false,
++ "export settings", "")
++ ->SetRequiredChild("outfile")
++
+
+ // musicmetautils.cpp
+ << add("--scanmusic", "scanmusic", false,
+@@ -194,6 +225,59 @@ void MythUtilCommandLineParser::LoadArguments(void)
+ add("--type", "type", "type", "(optional) type of notification (normal, error, warning, check, busy", "")
+ ->SetChildOf("notification");
+
++ //settingsutils.cpp
++ add("--groupname", "groupname", "", "Group of settings name", "")
++ ->SetRequiredChildOf("savesettings")
++ ->SetRequiredChildOf("restoresettings")
++ ->SetRequiredChildOf("deletesettings")
++ ->SetChildOf("copysettings");
++
++ add("--hostname", "hostname", "", "System name to save/restore settings", "")
++ ->SetChildOf("savesettings")
++ ->SetChildOf("restoresettings")
++ ->SetChildOf("copysettings")
++ ->SetChildOf("deletesettings")
++ ->SetChildOf("exportsettings")
++ ->SetChildOf("importsettings");
++
++ add("--host_1", "host_1", "", "First host in compare list", "")
++ ->SetRequiredChildOf("diffsettings");
++
++ add("--host_2", "host_2", "", "Second host in compare list", "")
++ ->SetRequiredChildOf("diffsettings");
++
++
++ add("--tablelist", "table_list", "", "List of tables to operate on "
++ "[keybindings,settings]", "")
++ ->SetChildOf("diffsettings")
++ ->SetChildOf("restoresettings")
++ ->SetChildOf("copysettings")
++ ->SetChildOf("exportsettings");
++
++ add("--clone", "fullclone", false, "Enable copy of all settings, "
++ "including those that are unique to each system.", "")
++ ->SetChildOf("copysettings");
++
++
++ add("--old-host", "oldhost", "", "Hostname to change", "")
++ ->SetRequiredChildOf("changehostname");
++
++ add("--new-host", "newhost", "", "New hostname", "")
++ ->SetRequiredChildOf("changehostname")
++ ->SetRequiredChildOf("copysettings");
++
++ add("--format", "format", false, "Format output of differences", "")
++ ->SetChildOf("diffsettings");
++ add("--distro-default", "distro-default", false, "Export settings for"
++ "import into the default table", "")
++ ->SetChildOf("exportsettings");
++ add("--generic", "generic", false, "export settings without saving "
++ "the hostname", "")
++ ->SetChildOf("exportsettings");
++
++
++
++
+ // Generic Options used by more than one utility
+ addRecording();
+ addInFile(true);
+diff --git a/mythtv/programs/mythutil/main.cpp b/mythtv/programs/mythutil/main.cpp
+index 0bc49f2..faada3d 100644
+--- a/mythtv/programs/mythutil/main.cpp
++++ b/mythtv/programs/mythutil/main.cpp
+@@ -26,6 +26,7 @@
+ #include "musicmetautils.h"
+ #include "recordingutils.h"
+ #include "signalhandling.h"
++#include "settingsutils.h"
+
+
+ int main(int argc, char *argv[])
+@@ -110,6 +111,7 @@
+ registerJobUtils(utilMap);
+ registerMarkupUtils(utilMap);
+ registerMessageUtils(utilMap);
++ registerSettingsUtils(utilMap);
+ registerMusicUtils(utilMap);
+ registerRecordingUtils(utilMap);
+
+diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro
+index f0ecbf5..f9472fc 100644
+--- a/mythtv/programs/mythutil/mythutil.pro
++++ b/mythtv/programs/mythutil/mythutil.pro
+@@ -22,8 +22,10 @@ QMAKE_CLEAN += $(TARGET)
+ HEADERS += backendutils.h fileutils.h jobutils.h markuputils.h
+ HEADERS += messageutils.h mpegutils.h musicmetautils.h
+ HEADERS += recordingutils.h
++HEADERS += settingsutils.h
+ SOURCES += main.cpp mythutil.cpp commandlineparser.cpp
+ SOURCES += backendutils.cpp fileutils.cpp jobutils.cpp markuputils.cpp
+ SOURCES += messageutils.cpp mpegutils.cpp musicmetautils.cpp eitutils.cpp
+ SOURCES += recordingutils.cpp
++SOURCES += settingsutils.cpp
+
+ mingw|win32-msvc*: LIBS += -lwinmm -lws2_32
+diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp
+new file mode 100644
+index 0000000..8fc7b0e
+--- /dev/null
++++ b/mythtv/programs/mythutil/settingsutils.cpp
+@@ -0,0 +1,586 @@
++// C++ includes
++#include <iostream>
++using namespace std;
++
++//QT includes
++#include <qdom.h>
++#include <QFile>
++#include <QDomElement>
++
++// libmyth* includes
++#include "compat.h"
++#include "exitcodes.h"
++#include "mythlogging.h"
++#include "mythcontext.h"
++
++
++#include "settingsutils.h"
++
++
++static int SaveSettings(const MythUtilCommandLineParser &cmdline)
++{
++ QString src_hostname;
++ QString groupname;
++
++ if (cmdline.toBool("groupname"))
++ groupname = cmdline.toString("groupname");
++
++ if (cmdline.toBool("hostname"))
++ src_hostname = cmdline.toString("hostname");
++ else
++ src_hostname = gCoreContext->GetHostName();
++
++ gCoreContext->savesettings_togroup(src_hostname,groupname);
++ return GENERIC_EXIT_OK;
++}
++
++static int DeleteSettings(const MythUtilCommandLineParser &cmdline)
++{
++
++ QString delete_hostname;
++ QString groupname;
++
++ if (cmdline.toBool("groupname"))
++ groupname = cmdline.toString("groupname");
++
++ if (cmdline.toBool("hostname"))
++ delete_hostname = cmdline.toString("hostname");
++ else
++ delete_hostname = gCoreContext->GetHostName();
++
++
++ gCoreContext->deletesettings(delete_hostname,groupname);
++
++ return GENERIC_EXIT_OK;
++}
++
++
++static int RestoreSettings(const MythUtilCommandLineParser &cmdline)
++{
++ QString dest_hostname;
++ QString groupname;
++ QString tablestring;
++ QStringList table_list;
++
++ if (cmdline.toBool("groupname"))
++ groupname = cmdline.toString("groupname");
++
++
++ if (cmdline.toBool("hostname"))
++ dest_hostname = cmdline.toString("hostname");
++ else
++ dest_hostname = gCoreContext->GetHostName();
++
++ if (cmdline.toBool("table_list"))
++ {
++ tablestring = QString(cmdline.toString("table_list"));
++ table_list = tablestring.split(",", QString::SkipEmptyParts);
++ }
++
++ gCoreContext->restoresettings(dest_hostname,
++ groupname,
++ table_list);
++
++ return GENERIC_EXIT_OK;
++}
++
++
++static int CopySettings(const MythUtilCommandLineParser &cmdline)
++{
++ QString src_hostname;
++ QString groupname;
++ QString tablestring;
++ QStringList table_list;
++ bool is_full_clone;
++ QString dest_hostname;
++
++ if (cmdline.toBool("groupname"))
++ groupname = cmdline.toString("groupname");
++ else
++ groupname = "Current";
++
++ if (cmdline.toBool("hostname"))
++ src_hostname = cmdline.toString("hostname");
++ else
++ src_hostname = gCoreContext->GetHostName();
++
++ if (cmdline.toBool("newhost"))
++ dest_hostname = cmdline.toString("newhost");
++
++ if (cmdline.toBool("table_list"))
++ {
++ tablestring = QString(cmdline.toString("table_list"));
++ table_list = tablestring.split(",", QString::SkipEmptyParts);
++ }
++
++ if (cmdline.toBool("fullclone"))
++ is_full_clone = true;
++ else
++ is_full_clone = false;
++
++ gCoreContext->clonesettings(src_hostname,
++ groupname,
++ table_list,
++ is_full_clone,
++ dest_hostname);
++
++ return GENERIC_EXIT_OK;
++}
++
++void print_out_diff_formated(QMap<QString, QStringList> resultset)
++{
++ QString settings_header;
++ QString keybindings_header;
++ QString tempString;
++ QString tempItem;
++ QString dashline_settings;
++ QString dashline_key;
++ QStringList tempList;
++
++ QString host_1;
++ QString host_2;
++ QString data_1;
++ QString data_2;
++ QString value;
++ QString context;
++ QString action;
++
++ int value_width = 35;
++ int data_width = 40;
++
++ int context_width = 22;
++ int action_width = 22;
++ int key_width = 35;
++
++ dashline_key = (tempString.fill('-', 133));
++ dashline_settings = (tempString.fill('-', 130));
++
++ QMap<QString, QStringList>::iterator i;
++
++
++ for (i = resultset.begin(); i != resultset.end(); ++i)
++ {
++ cout << endl<<i.key().toLocal8Bit().constData() << ": \t" << endl;;
++ //construct the headers
++ if (i.key() == "Settings")
++ {
++ //settings header
++ tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
++ host_1 = tempList.at(1);
++ host_2 = tempList.at(3);
++ tempString="|";
++ tempItem = "Value";
++ tempString.append(tempItem.leftJustified(value_width));
++ tempString.append("|");
++ tempItem = host_1; //hostname 1
++ tempString.append(tempItem.leftJustified(data_width));
++ tempString.append("|");
++ tempItem = host_2; //hostname 2
++ tempString.append(tempItem.leftJustified(data_width));
++ tempString.append("|");
++ settings_header = tempString;
++
++ cout << settings_header.toLocal8Bit().constData() << endl;;
++ cout << dashline_settings.toLocal8Bit().constData() << endl;
++ }
++
++ if (i.key() == "Keybindings")
++ {
++ //keybindings_header
++ tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
++ host_1 = tempList.at(2);
++ host_2 = tempList.at(4);
++ tempString="|";
++ tempItem = "Context";
++ tempString.append(tempItem.leftJustified(context_width));
++ tempString.append("|");
++ tempItem = "Action";
++ tempString.append(tempItem.leftJustified(action_width));
++ tempString.append("|");
++ tempItem = host_1;
++ tempString.append(tempItem.leftJustified(key_width));
++ tempString.append("|");
++ tempItem = host_2;
++ tempString.append(tempItem.leftJustified(key_width));
++ tempString.append("|");
++ keybindings_header = tempString;
++
++ cout << keybindings_header.toLocal8Bit().constData() << endl;;
++ cout << dashline_key.toLocal8Bit().constData() << endl;
++
++ }
++ // format each line
++ for (int y = 0; y < i.value().size(); ++y)
++ {
++ if (i.key() == "Settings")
++ {
++ tempList = (i.value().at(y)).split("|",
++ QString::SkipEmptyParts);
++ data_1 = tempList.at(2);
++ data_2 = tempList.at(4);
++ value = tempList.at(0);
++ tempString="|";
++ tempItem = value;
++ tempString.append(tempItem.leftJustified(value_width));
++ tempString.append("|");
++ tempItem = data_1;
++ tempString.append(tempItem.leftJustified(data_width));
++ tempString.append("|");
++ tempItem = data_2;
++ tempString.append(tempItem.leftJustified(data_width));
++ tempString.append("|");
++ }
++ if (i.key() == "Keybindings")
++ {
++ tempList = (i.value().at(y)).split("|",
++ QString::SkipEmptyParts);
++ data_1 = tempList.at(3);
++ data_2 = tempList.at(5);
++ context = tempList.at(0);
++ action = tempList.at(1);
++
++ tempString="|";
++ tempItem = context;
++ tempString.append(tempItem.leftJustified(context_width));
++ tempString.append("|");
++ tempItem = action;
++ tempString.append(tempItem.leftJustified(action_width));
++ tempString.append("|");
++ tempItem = data_1;
++ tempString.append(tempItem.leftJustified(key_width));
++ tempString.append("|");
++ tempItem = data_2;
++ tempString.append(tempItem.leftJustified(key_width));
++ tempString.append("|");
++ }
++
++ cout << tempString.toLocal8Bit().constData()<<endl;
++ }
++ }
++};
++
++static int DiffSettings(const MythUtilCommandLineParser &cmdline)
++{
++ QMap<QString, QStringList> resultset;
++ QString diff_hostname1;
++ QString diff_hostname2;
++ QStringList table_list;
++ bool format_results = false;
++ QMap<QString, QStringList>::iterator i;
++
++ if (cmdline.toBool("host_1"))
++ diff_hostname1 = cmdline.toString("host_1");
++ if (cmdline.toBool("host_2"))
++ diff_hostname2 = cmdline.toString("host_2");
++
++ if (cmdline.toBool("table_list"))
++ {
++ QString tablestring = QString(cmdline.toString("table_list"));
++ table_list = tablestring.split(",", QString::SkipEmptyParts);
++ }
++
++ if (cmdline.toBool("format"))
++ format_results = true;
++
++ resultset = gCoreContext->diff_settingsgroupname(diff_hostname1,
++ diff_hostname2,
++ table_list);
++ if (resultset.isEmpty())
++ cout << "No differences found" << endl;
++ else
++ {
++ if (format_results)
++ print_out_diff_formated(resultset);
++ else
++ {
++ for (i = resultset.begin(); i != resultset.end(); ++i)
++ {
++ cout << i.key().toLocal8Bit().constData() << " : \t" << endl;;
++ for (int y = 0; y < i.value().size(); ++y)
++ cout << i.value().at(y).toLocal8Bit().constData()<<endl;
++ cout << endl;
++ }
++ }
++ }
++ return GENERIC_EXIT_OK;
++};// DiffSettings
++
++static int ListGroups(const MythUtilCommandLineParser &cmdline)
++{
++ QMap<QString, QStringList> resultset;
++ resultset = gCoreContext->list_settingsgroupname();
++ QMap<QString, QStringList>::iterator i;
++ cout << endl;
++ for (i = resultset.begin(); i != resultset.end(); ++i)
++ {
++ cout << i.key().toLocal8Bit().constData() << " : \t";
++ for (int y = 0; y < i.value().size(); ++y)
++ cout << i.value().at(y).toLocal8Bit().constData()<<" " ;
++ cout << endl;
++ }
++ return GENERIC_EXIT_OK;
++};
++
++static int ImportSettings(const MythUtilCommandLineParser &cmdline)
++{
++
++ if (cmdline.toString("infile").isEmpty())
++ {
++ LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --infile option\n");
++ return GENERIC_EXIT_INVALID_CMDLINE;
++ }
++ QString import_hostname;
++ bool change_name = false;
++ if (cmdline.toBool("hostname"))
++ {
++ change_name = true;
++ import_hostname = cmdline.toString("hostname");
++ }
++ QString import_filename = cmdline.toString("infile");
++ QFile myFile(import_filename);
++
++ QDomDocument doc( "exported_xml" );
++ doc.setContent( &myFile );
++
++ QDomElement docElement = doc.documentElement();
++ QDomElement record_element;
++
++ if ( docElement.nodeName() != "exported_xml" )
++ {
++ cout << "not a valid exported xml file" << endl;
++ return 1;
++ }
++
++ QString out_string = "Importing records, please be patient";
++ cout << out_string.toLocal8Bit().constData() << endl;
++ //Gives list of records in the file + count
++ QDomNodeList nodeList = docElement.childNodes();
++ int total_records = nodeList.count();
++ out_string = QString("\nFound %1 records \n").arg(total_records);
++ cout << out_string.toLocal8Bit().constData() << endl;
++ LOG(VB_STDIO|VB_FLUSH, LOG_ERR, out_string);
++
++ for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling())
++ {
++ QString table_name=QString();
++ QMap<QString,QString> value_pair_map ;
++
++ //find table name for this record
++ QDomNode tablenode=n.namedItem("table");
++ record_element = tablenode.toElement();
++ table_name = record_element.text();
++
++ //loop over childern of n and convert to element
++ for(QDomNode subn = n.firstChild();
++ !subn.isNull();
++ subn = subn.nextSibling())
++ {
++ record_element = subn.toElement();
++ if ( record_element.nodeName() == "table" )
++ continue;
++ if ( change_name && record_element.nodeName() == "hostname" )
++ value_pair_map[record_element.nodeName()] = import_hostname;
++ else
++ value_pair_map[record_element.nodeName()] = record_element.text();
++ }
++ if (import_filename.endsWith("syssettings.xml"))
++ {
++ if ( value_pair_map["value"] == "BackendServerIP")
++ {
++ out_string = "sysettings, ignoring backendserver ip record";
++ cout << out_string.toLocal8Bit().constData() << endl;
++ }
++ else
++ gCoreContext->import_settings(value_pair_map,table_name);
++ }
++ else
++ //perform insert
++ gCoreContext->import_settings(value_pair_map,table_name);
++ }
++ return GENERIC_EXIT_OK;
++}; //end ImportSettings
++
++
++static int ExportSettings(const MythUtilCommandLineParser &cmdline)
++{
++ QMap<QString, QMap<QString,QString> > records;
++ QString src_hostname;
++ QString groupname;
++ QStringList table_list;
++ QString tablestring;
++ bool distro_default = false;
++ bool generic = false;
++ bool skip_host = false;
++
++
++
++ QDomDocument doc("mythutils_exported_settings");
++
++ if (cmdline.toBool("groupname"))
++ groupname = cmdline.toString("groupname");
++ else
++ groupname = "current";
++
++ if (cmdline.toBool("hostname"))
++ src_hostname = cmdline.toString("hostname");
++ else
++ src_hostname = gCoreContext->GetHostName();
++
++ if (cmdline.toBool("distro-default"))
++ {
++ distro_default = true;
++ skip_host = true;
++ }
++ if (cmdline.toBool("generic"))
++ {
++ generic = true;
++ //skip_host = true;
++ }
++ if (cmdline.toBool("table_list"))
++ {
++ tablestring = QString(cmdline.toString("table_list"));
++ table_list = tablestring.split(",", QString::SkipEmptyParts);
++ }
++ else
++ table_list << "settings" <<"keybindings" <<"jumppoints" ;
++
++ if (cmdline.toString("outfile").isEmpty())
++ {
++ LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --outfile option\n");
++ return GENERIC_EXIT_INVALID_CMDLINE;
++ }
++
++ QString export_filename = cmdline.toString("outfile");
++
++ records = gCoreContext->export_settings(src_hostname,groupname,
++ table_list, skip_host);
++
++ QDomElement exported_xml = doc.createElement("exported_xml");
++ doc.appendChild(exported_xml);
++
++ QMap<QString,int> record_count;
++ QMap<QString,QMap<QString,QString> >::iterator i;
++ for (i = records.begin(); i != records.end(); ++i )
++ {
++ QDomElement record = doc.createElement("record");
++ exported_xml.appendChild(record);
++
++ //loop over all values in the record
++ QMap<QString,QString> value_pair = i.value();
++ QMap<QString, QString>::iterator y;
++ //because we don't know the name of the key, we loop over it
++ for (y = value_pair.begin(); y != value_pair.end(); ++y)
++ {
++ //add key/pair to xml document
++ QDomElement tag = doc.createElement(y.key());
++ record.appendChild(tag);
++ QDomText t;
++ if ( distro_default == true )
++ { // If exporting distro_default then change hostname + table
++ if ( y.key() == "hostname" )
++ { //check for global values here, empty value means global
++ if ( y.value().isEmpty() )
++ t = doc.createTextNode(y.value());
++ else
++ t = doc.createTextNode("distro_default");
++ }
++ else if ( y.key() == "table")
++ t = doc.createTextNode(y.value()+"_distro_default");
++ else
++ t = doc.createTextNode(y.value());
++ }
++
++ else if ( generic == true )
++ { // If exporting generic then change hostname
++ if ( y.key() == "hostname" )
++ { //check for global values here, empty value means global
++ if ( y.value().isEmpty() )
++ t = doc.createTextNode(y.value());
++ else
++ t = doc.createTextNode("REPLACE_ME");
++ }
++ else
++ t = doc.createTextNode(y.value());
++ }
++ else
++ t = doc.createTextNode(y.value());
++
++ tag.appendChild(t);
++ //create record counts
++ if ( y.key() == "table" )
++ {
++ if ( record_count.contains( y.value()) )
++ {
++ int record_num = record_count[y.value()];
++ record_count[y.value()] = ++record_num;
++ }
++ else
++ record_count[y.value()] = 1;
++ }
++ }
++ }
++ QFile file( export_filename );
++
++ if( !file.open(QIODevice::WriteOnly) )
++ return -1;
++
++ QTextStream ts( &file );
++ ts << doc.toString();
++ file.close();
++ QMap<QString, int >::iterator rc_it;
++ for ( rc_it = record_count.begin(); rc_it != record_count.end(); ++rc_it)
++ {
++ QString table = rc_it.key();
++ int rc_count = rc_it.value();
++ QString out_string = QString ("Exported table %1: %2 records")
++ .arg(table)
++ .arg(rc_count);
++ cout << out_string.toLocal8Bit().constData() << endl;
++ }
++ return GENERIC_EXIT_OK;
++}; // end export_settings
++
++
++static int ChangeHostname(const MythUtilCommandLineParser &cmdline)
++{
++
++ QString old_hostname;
++ QString new_hostname;
++
++
++ if (cmdline.toBool("oldhost"))
++ old_hostname = cmdline.toString("oldhost");
++
++ if (cmdline.toBool("newhost"))
++ new_hostname = cmdline.toString("newhost");
++
++ if (old_hostname.isEmpty())
++ {
++ LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --old-host option\n");
++ return GENERIC_EXIT_INVALID_CMDLINE;
++ }
++
++ if (new_hostname.isEmpty())
++ {
++ LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --new-host option\n");
++ return GENERIC_EXIT_INVALID_CMDLINE;
++ }
++
++ gCoreContext->change_hostname(old_hostname, new_hostname);
++
++ return GENERIC_EXIT_OK;
++}; //end ChangeHostname
++
++void registerSettingsUtils(UtilMap &utilMap)
++{
++ utilMap["savesettings"] = &SaveSettings;
++ utilMap["deletesettings"] = &DeleteSettings;
++ utilMap["restoresettings"] = &RestoreSettings;
++ utilMap["copysettings"] = &CopySettings;
++ utilMap["diffsettings"] = &DiffSettings;
++ utilMap["listgroups"] = &ListGroups;
++ utilMap["importsettings"] = &ImportSettings;
++ utilMap["exportsettings"] = &ExportSettings;
++ utilMap["changehostname"] = &ChangeHostname;
++}
++
++/* vim: set expandtab tabstop=4 shiftwidth=4: */
+\ No newline at end of file
+diff --git a/mythtv/programs/mythutil/settingsutils.h b/mythtv/programs/mythutil/settingsutils.h
+new file mode 100644
+index 0000000..413496c
+--- /dev/null
++++ b/mythtv/programs/mythutil/settingsutils.h
+@@ -0,0 +1,3 @@
++#include "mythutil.h"
++
++void registerSettingsUtils(UtilMap &utilMap);
diff --git a/abs/core/mythtv/stable-30/mythtv/mythfrontend_en_us.ts_Title_Case.patch b/abs/core/mythtv/stable-30/mythtv/mythfrontend_en_us.ts_Title_Case.patch
new file mode 100644
index 0000000..2669566
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/mythfrontend_en_us.ts_Title_Case.patch
@@ -0,0 +1,29547 @@
+--- src/mythtv/i18n/mythfrontend_en_us.ts.orig 2019-02-25 01:33:22.413248950 +0000
++++ src/mythtv/i18n/mythfrontend_en_us.ts 2019-03-01 22:16:23.173068477 +0000
+@@ -4,21 +4,21 @@
+ <context>
+ <name>(Categories)</name>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1522"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="388"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1506"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="389"/>
+ <source>Education</source>
+ <translation>Education</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1524"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="640"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1508"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="641"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="350"/>
+ <source>Entertainment</source>
+ <translation>Entertainment</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1526"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="380"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1510"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="381"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="309"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="311"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="314"/>
+@@ -32,1090 +32,1090 @@
+ <translation>Movie</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1528"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="536"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1512"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="537"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="340"/>
+ <source>News</source>
+ <translation>News</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1530"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="394"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="546"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1514"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="395"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="547"/>
+ <source>Religious</source>
+ <translation>Religious</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1532"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="382"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1516"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="383"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="359"/>
+ <source>Sports</source>
+ <translation>Sports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1534"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1518"/>
+ <source>Other</source>
+ <translation>Other</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1536"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="398"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1520"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="399"/>
+ <source>Action</source>
+ <translation>Action</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1538"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1522"/>
+ <source>Advertisement</source>
+ <translation>Advertisement</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1540"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="406"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1524"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="407"/>
+ <source>Animated</source>
+ <translation>Animated</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1542"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="408"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1526"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="409"/>
+ <source>Anthology</source>
+ <translation>Anthology</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1544"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1528"/>
+ <source>Automobile</source>
+ <translation>Automobile</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1546"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="414"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1530"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="415"/>
+ <source>Awards</source>
+ <translation>Awards</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1548"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="418"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1532"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="419"/>
+ <source>Baseball</source>
+ <translation>Baseball</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1550"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="420"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1534"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="421"/>
+ <source>Basketball</source>
+ <translation>Basketball</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1552"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1536"/>
+ <source>Bulletin</source>
+ <translation>Bulletin</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1554"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1538"/>
+ <source>Business</source>
+ <translation>Business</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1556"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1540"/>
+ <source>Classical</source>
+ <translation>Classical</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1558"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1542"/>
+ <source>College</source>
+ <translation>College</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1560"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1544"/>
+ <source>Combat</source>
+ <translation>Combat</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1562"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="442"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1546"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="443"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="323"/>
+ <source>Comedy</source>
+ <translation>Comedy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1564"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1548"/>
+ <source>Commentary</source>
+ <translation>Commentary</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1566"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1550"/>
+ <source>Concert</source>
+ <translation>Concert</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1568"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="632"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1552"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="633"/>
+ <source>Consumer</source>
+ <translation>Consumer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1570"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1554"/>
+ <source>Contemporary</source>
+ <translation>Contemporary</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1572"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="450"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1556"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="451"/>
+ <source>Crime</source>
+ <translation>Crime</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1574"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="454"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1558"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="455"/>
+ <source>Dance</source>
+ <translation>Dance</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1576"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="458"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1560"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="459"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="345"/>
+ <source>Documentary</source>
+ <translation>Documentary</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1578"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="460"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1562"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="461"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="487"/>
+ <source>Drama</source>
+ <translation>Drama</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1580"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1564"/>
+ <source>Elementary</source>
+ <translation>Elementary</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1582"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1566"/>
+ <source>Erotica</source>
+ <translation>Erotica</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1584"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="464"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1568"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="465"/>
+ <source>Exercise</source>
+ <translation>Exercise</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1586"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="466"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1570"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="467"/>
+ <source>Fantasy</source>
+ <translation>Fantasy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1588"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1572"/>
+ <source>Farm</source>
+ <translation>Farm</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1590"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="468"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1574"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="469"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="434"/>
+ <source>Fashion</source>
+ <translation>Fashion</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1592"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1576"/>
+ <source>Fiction</source>
+ <translation>Fiction</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1594"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1578"/>
+ <source>Food</source>
+ <translation>Food</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1596"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="472"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="648"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1580"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="473"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="649"/>
+ <source>Football</source>
+ <translation>Football</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1598"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1582"/>
+ <source>Foreign</source>
+ <translation>Foreign</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1600"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="476"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1584"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="477"/>
+ <source>Fundraiser</source>
+ <translation>Fundraiser</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1602"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1586"/>
+ <source>Game/Quiz</source>
+ <translation>Game/Quiz</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1604"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1588"/>
+ <source>Garden</source>
+ <translation>Garden</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1606"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="480"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1590"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="481"/>
+ <source>Golf</source>
+ <translation>Golf</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1608"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1592"/>
+ <source>Government</source>
+ <translation>Government</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1610"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="484"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1594"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="485"/>
+ <source>Health</source>
+ <translation>Health</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1612"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1596"/>
+ <source>High School</source>
+ <translation>High School</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1614"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="486"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1598"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="487"/>
+ <source>History</source>
+ <translation>History</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1616"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1600"/>
+ <source>Hobby</source>
+ <translation>Hobby</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1618"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="490"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1602"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="491"/>
+ <source>Hockey</source>
+ <translation>Hockey</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1620"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1604"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1622"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="500"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1606"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="501"/>
+ <source>Horror</source>
+ <translation>Horror</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1624"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1608"/>
+ <source>Information</source>
+ <translation>Information</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1626"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1610"/>
+ <source>Instruction</source>
+ <translation>Instruction</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1628"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1612"/>
+ <source>International</source>
+ <translation>International</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1630"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="508"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1614"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="509"/>
+ <source>Interview</source>
+ <translation>Interview</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1632"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1616"/>
+ <source>Language</source>
+ <translation>Language</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1634"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1618"/>
+ <source>Legal</source>
+ <translation>Legal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1636"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1620"/>
+ <source>Live</source>
+ <translation>Live</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1638"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1622"/>
+ <source>Local</source>
+ <translation>Local</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1640"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1624"/>
+ <source>Math</source>
+ <translation>Math</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1642"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="514"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1626"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="515"/>
+ <source>Medical</source>
+ <translation>Medical</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1644"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1628"/>
+ <source>Meeting</source>
+ <translation>Meeting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1646"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="698"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1630"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="699"/>
+ <source>Military</source>
+ <translation>Military</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1648"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="516"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1632"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="517"/>
+ <source>Miniseries</source>
+ <translation>Miniseries</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1650"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="522"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1634"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="523"/>
+ <source>Music</source>
+ <translation>Music</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1652"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="532"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1636"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="533"/>
+ <source>Mystery</source>
+ <translation>Mystery</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1654"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1638"/>
+ <source>National</source>
+ <translation>National</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1656"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="534"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1640"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="535"/>
+ <source>Nature</source>
+ <translation>Nature</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1658"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1642"/>
+ <source>Police</source>
+ <translation>Police</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1660"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="672"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1644"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="673"/>
+ <source>Politics</source>
+ <translation>Politics</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1662"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1646"/>
+ <source>Premiere</source>
+ <translation>Premiere</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1664"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1648"/>
+ <source>Prerecorded</source>
+ <translation>Prerecorded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1666"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1650"/>
+ <source>Product</source>
+ <translation>Product</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1668"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1652"/>
+ <source>Professional</source>
+ <translation>Professional</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1670"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1654"/>
+ <source>Public</source>
+ <translation>Public</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1672"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1656"/>
+ <source>Racing</source>
+ <translation>Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1674"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1658"/>
+ <source>Reading</source>
+ <translation>Reading</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1676"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1660"/>
+ <source>Repair</source>
+ <translation>Repair</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1678"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1662"/>
+ <source>Repeat</source>
+ <translation>Repeat</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1680"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1664"/>
+ <source>Review</source>
+ <translation>Review</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1682"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="550"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1666"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="551"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="330"/>
+ <source>Romance</source>
+ <translation>Romance</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1684"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="558"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1668"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="559"/>
+ <source>Science</source>
+ <translation>Science</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1686"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1670"/>
+ <source>Series</source>
+ <translation>Series</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1688"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1672"/>
+ <source>Service</source>
+ <translation>Service</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1690"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="564"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1674"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="565"/>
+ <source>Shopping</source>
+ <translation>Shopping</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1692"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1676"/>
+ <source>Soap Opera</source>
+ <translation>Soap Opera</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1694"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="576"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1678"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="577"/>
+ <source>Special</source>
+ <translation>Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1696"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="582"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1680"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="583"/>
+ <source>Suspense</source>
+ <translation>Suspense</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1698"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="586"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1682"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="587"/>
+ <source>Talk</source>
+ <translation>Talk</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1700"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1684"/>
+ <source>Technical</source>
+ <translation>Technical</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1702"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="588"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="690"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1686"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="589"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="691"/>
+ <source>Tennis</source>
+ <translation>Tennis</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1704"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="592"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1688"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="593"/>
+ <source>Travel</source>
+ <translation>Travel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1706"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="594"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1690"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="595"/>
+ <source>Variety</source>
+ <translation>Variety</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1708"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1692"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1710"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="602"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1694"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="603"/>
+ <source>Weather</source>
+ <translation>Weather</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cc608decoder.cpp" line="1712"/>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="604"/>
++ <location filename="../libs/libmythtv/cc608decoder.cpp" line="1696"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="605"/>
+ <source>Western</source>
+ <translation>Western</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="384"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="385"/>
+ <source>News/Business</source>
+ <translation>News/Business</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="386"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="387"/>
+ <source>Family/Children</source>
+ <translation>Family/Children</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="390"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="391"/>
+ <source>Series/Special</source>
+ <translation>Series/Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="392"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="393"/>
+ <source>Music/Art</source>
+ <translation>Music/Art</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="400"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="401"/>
+ <source>Adults only</source>
+- <translation>Adults only</translation>
++ <translation>Adults Only</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="402"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="403"/>
+ <source>Adventure</source>
+ <translation>Adventure</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="404"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="405"/>
+ <source>Animals</source>
+ <translation>Animals</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="410"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="411"/>
+ <source>Art</source>
+ <translation>Art</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="412"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="413"/>
+ <source>Auto</source>
+ <translation>Auto</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="416"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="417"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="409"/>
+ <source>Ballet</source>
+ <translation>Ballet</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="422"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="423"/>
+ <source>Biography</source>
+ <translation>Biography</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="424"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="425"/>
+ <source>Boat</source>
+ <translation>Boat</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="426"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="427"/>
+ <source>Bowling</source>
+ <translation>Bowling</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="428"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="429"/>
+ <source>Boxing</source>
+ <translation>Boxing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="430"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="431"/>
+ <source>Bus./financial</source>
+- <translation>Bus./financial</translation>
++ <translation>Business/Financial</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="432"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="433"/>
+ <source>Children</source>
+ <translation>Children</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="434"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="435"/>
+ <source>Children-special</source>
+- <translation>Children-special</translation>
++ <translation>Children-Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="436"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="437"/>
+ <source>Children-news</source>
+- <translation>Children-news</translation>
++ <translation>Children-News</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="438"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="439"/>
+ <source>Children-music</source>
+- <translation>Children-music</translation>
++ <translation>Children-Music</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="440"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="441"/>
+ <source>Collectibles</source>
+ <translation>Collectibles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="444"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="445"/>
+ <source>Comedy-drama</source>
+- <translation>Comedy-drama</translation>
++ <translation>Comedy-Drama</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="446"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="447"/>
+ <source>Computers</source>
+ <translation>Computers</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="448"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="449"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="472"/>
+ <source>Cooking</source>
+ <translation>Cooking</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="452"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="453"/>
+ <source>Crime drama</source>
+- <translation>Crime drama</translation>
++ <translation>Crime Drama</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="456"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="457"/>
+ <source>Docudrama</source>
+ <translation>Docudrama</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="462"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="463"/>
+ <source>Educational</source>
+ <translation>Educational</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="470"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="471"/>
+ <source>Fishing</source>
+ <translation>Fishing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="474"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="475"/>
+ <source>French</source>
+ <translation>French</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="478"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="479"/>
+ <source>Game show</source>
+- <translation>Game show</translation>
++ <translation>Game Show</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="482"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="483"/>
+ <source>Gymnastics</source>
+ <translation>Gymnastics</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="488"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="489"/>
+ <source>Historical drama</source>
+- <translation>Historical drama</translation>
++ <translation>Historical Drama</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="492"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="493"/>
+ <source>Holiday</source>
+ <translation>Holiday</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="494"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="495"/>
+ <source>Holiday-children</source>
+- <translation>Holiday-children</translation>
++ <translation>Holiday-Children</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="496"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="497"/>
+ <source>Holiday-children special</source>
+- <translation>Holiday-children special</translation>
++ <translation>Holiday-Children Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="498"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="499"/>
+ <source>Holiday special</source>
+- <translation>Holiday special</translation>
++ <translation>Holiday Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="502"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="503"/>
+ <source>Horse racing</source>
+- <translation>Horse racing</translation>
++ <translation>Horse Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="504"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="505"/>
+ <source>House/garden</source>
+- <translation>House/garden</translation>
++ <translation>House/Garden</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="506"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="507"/>
+ <source>How-to</source>
+- <translation>How-to</translation>
++ <translation>How-To</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="510"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="511"/>
+ <source>Lacrosse</source>
+ <translation>Lacrosse</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="512"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="513"/>
+ <source>Martial Arts</source>
+ <translation>Martial Arts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="518"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="519"/>
+ <source>Motorsports</source>
+ <translation>Motorsports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="520"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="521"/>
+ <source>Motorcycle</source>
+ <translation>Motorcycle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="524"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="525"/>
+ <source>Music special</source>
+- <translation>Music special</translation>
++ <translation>Music Special</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="526"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="527"/>
+ <source>Music talk</source>
+- <translation>Music talk</translation>
++ <translation>Music Talk</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="528"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="529"/>
+ <source>Musical</source>
+ <translation>Musical</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="530"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="531"/>
+ <source>Musical comedy</source>
+- <translation>Musical comedy</translation>
++ <translation>Musical Comedy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="538"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="539"/>
+ <source>Opera</source>
+ <translation>Opera</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="540"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="541"/>
+ <source>Outdoors</source>
+ <translation>Outdoors</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="542"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="543"/>
+ <source>Public affairs</source>
+- <translation>Public affairs</translation>
++ <translation>Public Affairs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="544"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="545"/>
+ <source>Reality</source>
+ <translation>Reality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="548"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="549"/>
+ <source>Rodeo</source>
+ <translation>Rodeo</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="552"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="553"/>
+ <source>Romance-comedy</source>
+- <translation>Romance-comedy</translation>
++ <translation>Romance-Comedy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="554"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="555"/>
+ <source>Rugby</source>
+ <translation>Rugby</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="556"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="557"/>
+ <source>Running</source>
+ <translation>Running</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="560"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="561"/>
+ <source>Science fiction</source>
+- <translation>Science fiction</translation>
++ <translation>Science Fiction</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="562"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="563"/>
+ <source>Self improvement</source>
+- <translation>Self improvement</translation>
++ <translation>Self Improvement</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="566"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="567"/>
+ <source>Skiing</source>
+ <translation>Skiing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="568"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="569"/>
+ <source>Soap</source>
+ <translation>Soap</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="570"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="571"/>
+ <source>Soccer</source>
+ <translation>Soccer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="572"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="573"/>
+ <source>Softball</source>
+ <translation>Softball</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="574"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="575"/>
+ <source>Spanish</source>
+ <translation>Spanish</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="578"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="579"/>
+ <source>Sports non-event</source>
+- <translation>Sports non-event</translation>
++ <translation>Sports Non-Event</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="580"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="581"/>
+ <source>Sports talk</source>
+- <translation>Sports talk</translation>
++ <translation>Sports Talk</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="584"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="585"/>
+ <source>Swimming</source>
+ <translation>Swimming</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="590"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="591"/>
+ <source>Track/field</source>
+- <translation>Track/field</translation>
++ <translation>Track/Field</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="596"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="597"/>
+ <source>Volleyball</source>
+ <translation>Volleyball</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="598"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="599"/>
+ <source>War</source>
+ <translation>War</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="600"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="601"/>
+ <source>Watersports</source>
+ <translation>Watersports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="606"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="607"/>
+ <source>Wrestling</source>
+ <translation>Wrestling</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="608"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="609"/>
+ <source>Yoga</source>
+ <translation>Yoga</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="610"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="611"/>
+ <source>Agriculture</source>
+ <translation>Agriculture</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="612"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="613"/>
+ <source>Anime</source>
+ <translation>Anime</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="614"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="615"/>
+ <source>Arm Wrestling</source>
+ <translation>Arm Wrestling</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="616"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="617"/>
+ <source>Arts/crafts</source>
+- <translation>Arts/crafts</translation>
++ <translation>Arts/Crafts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="618"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="619"/>
+ <source>Auction</source>
+ <translation>Auction</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="620"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="621"/>
+ <source>Auto racing</source>
+- <translation>Auto racing</translation>
++ <translation>Auto Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="622"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="623"/>
+ <source>Air racing</source>
+- <translation>Air racing</translation>
++ <translation>Air Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="624"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="625"/>
+ <source>Badminton</source>
+ <translation>Badminton</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="626"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="627"/>
+ <source>Bicycle racing</source>
+- <translation>Bicycle racing</translation>
++ <translation>Bicycle Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="628"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="629"/>
+ <source>Boat Racing</source>
+ <translation>Boat Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="630"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="631"/>
+ <source>Community</source>
+ <translation>Community</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="634"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="635"/>
+ <source>Debate</source>
+ <translation>Debate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="636"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="637"/>
+ <source>Dog show</source>
+- <translation>Dog show</translation>
++ <translation>Dog Show</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="638"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="639"/>
+ <source>Drag racing</source>
+- <translation>Drag racing</translation>
++ <translation>Drag Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="642"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="643"/>
+ <source>Environment</source>
+ <translation>Environment</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="644"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="645"/>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="380"/>
+ <source>Equestrian</source>
+ <translation>Equestrian</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="646"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="647"/>
+ <source>Field hockey</source>
+- <translation>Field hockey</translation>
++ <translation>Field Hockey</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="650"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="651"/>
+ <source>Gay/lesbian</source>
+- <translation>Gay/lesbian</translation>
++ <translation>Gay/Lesbian</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="652"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="653"/>
+ <source>Handball</source>
+ <translation>Handball</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="654"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="655"/>
+ <source>Home improvement</source>
+- <translation>Home improvement</translation>
++ <translation>Home Improvement</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="656"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="657"/>
+ <source>Hunting</source>
+ <translation>Hunting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="658"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="659"/>
+ <source>Hydroplane racing</source>
+- <translation>Hydroplane racing</translation>
++ <translation>Hydroplane Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="660"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="661"/>
+ <source>Law</source>
+ <translation>Law</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="662"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="663"/>
+ <source>Motorcycle racing</source>
+- <translation>Motorcycle racing</translation>
++ <translation>Motorcycle Racing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="664"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="665"/>
+ <source>Newsmagazine</source>
+ <translation>Newsmagazine</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="666"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="667"/>
+ <source>Paranormal</source>
+ <translation>Paranormal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="668"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="669"/>
+ <source>Parenting</source>
+ <translation>Parenting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="670"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="671"/>
+ <source>Performing arts</source>
+ <translatorcomment>Will have to be modified for &quot;Performing Arts&quot;...</translatorcomment>
+ <translation>Performing Arts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="674"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="675"/>
+ <source>Pro wrestling</source>
+- <translation>Pro wrestling</translation>
++ <translation>Pro Wrestling</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="676"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="677"/>
+ <source>Sailing</source>
+ <translation>Sailing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="678"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="679"/>
+ <source>Shooting</source>
+ <translation>Shooting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="680"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="681"/>
+ <source>Sitcom</source>
+ <translation>Sitcom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="682"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="683"/>
+ <source>Skateboarding</source>
+ <translation>Skateboarding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="684"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="685"/>
+ <source>Snowboarding</source>
+ <translation>Snowboarding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="686"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="687"/>
+ <source>Standup</source>
+ <translation>Standup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="688"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="689"/>
+ <source>Surfing</source>
+ <translation>Surfing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="692"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="693"/>
+ <source>Triathlon</source>
+ <translation>Triathlon</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="694"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="695"/>
+ <source>Card games</source>
+- <translation>Card games</translation>
++ <translation>Card Games</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="696"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="697"/>
+ <source>Poker</source>
+ <translation>Poker</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="700"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="701"/>
+ <source>Technology</source>
+ <translation>Technology</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="702"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="703"/>
+ <source>Mixed martial arts</source>
+- <translation>Mixed martial arts</translation>
++ <translation>Mixed Martial Arts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="704"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="705"/>
+ <source>Action sports</source>
+- <translation>Action sports</translation>
++ <translation>Action Sports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="706"/>
++ <location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="707"/>
+ <source>Dish Network</source>
+ <translation>Dish Network</translation>
+ </message>
+@@ -1144,7 +1144,7 @@
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="326"/>
+ <source>Soap/melodrama/folkloric</source>
+- <translation>Soap/melodrama/folkloric</translation>
++ <translation>Soap/Melodrama/Folkloric</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="333"/>
+@@ -1160,12 +1160,12 @@
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="341"/>
+ <source>News/weather report</source>
+- <translation>News/weather report</translation>
++ <translation>News/Weather Report</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="343"/>
+ <source>News magazine</source>
+- <translation>News magazine</translation>
++ <translation>News Magazine</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="347"/>
+@@ -1380,7 +1380,7 @@
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="447"/>
+ <source>Nature/animals/Environment</source>
+- <translation>Nature/animals/Environment</translation>
++ <translation>Nature/Animals/Environment</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="449"/>
+@@ -1440,7 +1440,7 @@
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="473"/>
+ <source>Advertizement/Shopping</source>
+- <translation>Advertizement/Shopping</translation>
++ <translation>Advertisement/Shopping</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mpeg/dvbdescriptors.cpp" line="475"/>
+@@ -1471,152 +1471,152 @@
+ <context>
+ <name>(ChannelSettings)</name>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="89"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="90"/>
+ <source>[Not Selected]</source>
+ <translation>[Not Selected]</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="132"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="133"/>
+ <source>TV Format</source>
+ <translation>TV Format</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="133"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="134"/>
+ <source>If this channel uses a format other than TV Format in the General Backend Setup screen, set it here.</source>
+ <translation>If this channel uses a format other than TV Format in the General Backend Setup screen, set it here.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="173"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="174"/>
+ <source>DataDirect Time Offset</source>
+ <translation>DataDirect Time Offset</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="176"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="177"/>
+ <source>Offset (in minutes) to apply to the program guide data during import. This can be used when the listings for a particular channel are in a different time zone. (Works for DataDirect listings only.)</source>
+- <translation>Offset (in minutes) to apply to the program guide data during import. This can be used when the listings for a particular channel are in a different time zone. (Works for DataDirect listings only.)</translation>
++ <translation>Offset (in minutes) to apply to the program guide data during import. This can be used when the listings for a particular channel are in a different time zone. (Works for DataDirect listings only.)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="191"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="192"/>
+ <source>Priority</source>
+ <translation>Priority</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="193"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="194"/>
+ <source>Number of priority points to be added to any recording on this channel during scheduling. Use a positive number as the priority if you want this to be a preferred channel, a negative one to depreciate this channel.</source>
+ <translation>Number of priority points to be added to any recording on this channel during scheduling. Use a positive number as the priority if you want this to be a preferred channel, a negative one to depreciate this channel.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="207"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="208"/>
+ <source>Icon</source>
+ <translation>Icon</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="209"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="210"/>
+ <source>Image file to use as the icon for this channel on various MythTV displays.</source>
+ <translation>Image file to use as the icon for this channel on various MythTV displays.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="221"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="222"/>
+ <source>Video filters</source>
+- <translation>Video filters</translation>
++ <translation>Video Filters</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="224"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="225"/>
+ <source>Filters to be used when recording from this channel. Not used with hardware encoding cards.</source>
+- <translation>Filters to be used when recording from this channel. Not used with hardware encoding cards.</translation>
++ <translation>Filters to be used when recording from this channel. Not used with hardware encoding cards.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="238"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="239"/>
+ <source>Playback filters</source>
+- <translation>Playback filters</translation>
++ <translation>Playback Filters</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="241"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="242"/>
+ <source>Filters to be used when recordings from this channel are viewed. Start with a plus to append to the global playback filters.</source>
+ <translation>Filters to be used when recordings from this channel are viewed. Start with a plus to append to the global playback filters.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="256"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="257"/>
+ <source>ID used by listing services to get an exact correspondence between a channel in your line-up and a channel in their database. Normally this is set automatically when &apos;mythfilldatabase&apos; is run.</source>
+ <translation>ID used by listing services to get an exact correspondence between a channel in your line-up and a channel in their database. Normally this is set automatically when &apos;mythfilldatabase&apos; is run.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="312"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="313"/>
+ <source>ServiceID</source>
+- <translation>ServiceID</translation>
++ <translation>Service ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="314"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="315"/>
+ <source>Service ID (Program Number) of desired channel within the transport stream. If there is only one channel, then setting this to anything will still find it.</source>
+ <translation>Service ID (Program Number) of desired channel within the transport stream. If there is only one channel, then setting this to anything will still find it.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="345"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="343"/>
+ <source>Commercial Detection Method</source>
+ <translation>Commercial Detection Method</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="348"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="346"/>
+ <source>Changes the method of commercial detection used for recordings on this channel or skips detection by marking the channel as Commercial Free.</source>
+ <translation>Changes the method of commercial detection used for recordings on this channel or skips detection by marking the channel as Commercial Free.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="370"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="368"/>
+ <source>Visible</source>
+ <translation>Visible</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="372"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="370"/>
+ <source>If enabled, the channel will be visible in the EPG.</source>
+ <translation>If enabled, the channel will be visible in the EPG.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="383"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="381"/>
+ <source>Use on air guide</source>
+- <translation>Use on air guide</translation>
++ <translation>Use On Air Guide</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="386"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="384"/>
+ <source>If enabled, guide information for this channel will be updated using &apos;Over-the-Air&apos; program listings.</source>
+ <translation>If enabled, guide information for this channel will be updated using &apos;Over-the-Air&apos; program listings.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="402"/>
+- <source>Frequency or Channel</source>
+- <translation>Frequency or Channel</translation>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="400"/>
++ <source>Freq/Channel</source>
++ <translation>Frequency/Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="404"/>
+- <source>Specify either the exact frequency (in kHz) or a valid channel for your &apos;TV Format&apos;.</source>
+- <translation>Specify either the exact frequency (in kHz) or a valid channel for your &apos;TV Format&apos;.</translation>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="402"/>
++ <source>Depending on the tuner type, specify either the exact frequency (in kHz) or a valid channel number that will be understood by your tuners.</source>
++ <translation>Depending on the tuner type, specify either the exact frequency (in kHz) or a valid channel number that will be understood by your tuners.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="417"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="416"/>
+ <source>Finetune (kHz)</source>
+ <translation>Finetune (kHz)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="420"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="419"/>
+ <source>Value to be added to your desired frequency (in kHz) for &apos;fine tuning&apos;.</source>
+ <translation>Value to be added to your desired frequency (in kHz) for &apos;fine tuning&apos;.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="473"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="474"/>
+ <source>Channel Options - Common</source>
+ <translation>Channel Options - Common</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="580"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="566"/>
+ <source>Channel Options - Filters</source>
+ <translation>Channel Options - Filters</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="591"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="575"/>
+ <source>Channel Options - Video4Linux</source>
+ <translation>Channel Options - Video4Linux</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="610"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="593"/>
+ <source>Channel Options - Raw Transport Stream</source>
+ <translation>Channel Options - Raw Transport Stream</translation>
+ </message>
+@@ -1624,72 +1624,53 @@
+ <context>
+ <name>(Common)</name>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="65"/>
+- <source>Hostname</source>
+- <translation>Hostname</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="94"/>
+- <source>Port</source>
+- <comment>TCP/IP port</comment>
+- <translation>Port</translation>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="56"/>
++ <source>Database name</source>
++ <translation>Database Name</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="111"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="64"/>
+ <source>User</source>
+ <translation>User</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="121"/>
+- <source>Password</source>
+- <translation>Password</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="41"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1483"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1507"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1558"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="43"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1486"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1509"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1567"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1560"/>
+ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1652"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1739"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/mythdate.cpp" line="156"/>
++ <location filename="../libs/libmythbase/mythdate.cpp" line="185"/>
+ <source>Today</source>
+ <translation>Today</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/mythdate.cpp" line="158"/>
++ <location filename="../libs/libmythbase/mythdate.cpp" line="187"/>
+ <source>Yesterday</source>
+ <translation>Yesterday</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/mythdate.cpp" line="160"/>
++ <location filename="../libs/libmythbase/mythdate.cpp" line="189"/>
+ <source>Tomorrow</source>
+ <translation>Tomorrow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/bluraymetadata.cpp" line="108"/>
++ <location filename="../libs/libmythmetadata/bluraymetadata.cpp" line="114"/>
+ <source>%1 of %2</source>
+ <extracomment>%1 and %2 are both numbers, %1 is the current position, %2 the maximum</extracomment>
+ <translation>%1 of %2</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="474"/>
+- <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="487"/>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="161"/>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="164"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="586"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="589"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="595"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="598"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="478"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="160"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="637"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="640"/>
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n minute</numerusform>
+@@ -1697,9 +1678,8 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="481"/>
+- <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="493"/>
+- <location filename="../libs/libmythtv/osd.cpp" line="948"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="484"/>
++ <location filename="../libs/libmythtv/osd.cpp" line="987"/>
+ <source>%n second(s)</source>
+ <translation>
+ <numerusform>%n second</numerusform>
+@@ -1707,122 +1687,124 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="174"/>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="188"/>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="784"/>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="793"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="169"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="183"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="753"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="762"/>
+ <source>Yes</source>
+ <translation>Yes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="177"/>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="191"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="172"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="186"/>
+ <location filename="../programs/mythfrontend/exitprompt.cpp" line="225"/>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="786"/>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="795"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="755"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="764"/>
+ <source>No</source>
+ <translation>No</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1488"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1511"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1569"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1561"/>
+ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1654"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1741"/>
+ <source>Cancel All</source>
+ <translation>Cancel All</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelscan/iptvchannelfetcher.cpp" line="124"/>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="142"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1333"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="146"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="71"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2609"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2627"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2687"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2706"/>
+ <source>Auto</source>
+ <comment>Automatic</comment>
+ <translation>Auto</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="50"/>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="64"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="49"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="66"/>
+ <source>Channel Name</source>
+ <translation>Channel Name</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="60"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="59"/>
+ <source>Channel Number</source>
+ <translation>Channel Number</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="71"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="60"/>
++ <source>This is the number by which the channel is known to MythTV.</source>
++ <translation>This is the number by which the channel is known to MythTV.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="72"/>
+ <source>Video Source</source>
+ <translation>Video Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="125"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="126"/>
+ <source>Callsign</source>
+ <translation>Callsign</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="137"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1236"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="106"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="138"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1229"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="172"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="254"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="255"/>
+ <source>XMLTV ID</source>
+ <translation>XMLTV ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="433"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="434"/>
+ <source>Contrast</source>
+ <translation>Contrast</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="444"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="445"/>
+ <source>Brightness</source>
+ <translation>Brightness</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="455"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="456"/>
+ <source>Color</source>
+ <translation>Color</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelsettings.cpp" line="465"/>
++ <location filename="../libs/libmythtv/channelsettings.cpp" line="467"/>
+ <source>Hue</source>
+ <translation>Hue</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="51"/>
++ <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="52"/>
+ <source>Signal To Noise</source>
+- <translation>Signal To Noise</translation>
++ <translation>Signal to Noise</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="222"/>
++ <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="227"/>
+ <location filename="../libs/libmythtv/signalmonitorvalue.cpp" line="28"/>
+ <source>Signal Lock</source>
+ <translation>Signal Lock</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="224"/>
++ <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="229"/>
+ <source>Signal Power</source>
+ <translation>Signal Power</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="226"/>
++ <location filename="../libs/libmythtv/recorders/signalmonitor.cpp" line="231"/>
+ <source>Script Status</source>
+ <translation>Script Status</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="592"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="601"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="643"/>
+ <source>%n hour(s)</source>
+ <translation>
+ <numerusform>%n hour</numerusform>
+@@ -1830,123 +1812,105 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="609"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="649"/>
+ <source>%1 %2</source>
+ <comment>Hours and minutes</comment>
+ <extracomment>Time duration, %1 is replaced by the hours, %2 by the minutes</extracomment>
+ <translation>%1 %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythnotificationcenter.cpp" line="1540"/>
++ <location filename="../libs/libmythui/mythnotificationcenter.cpp" line="1542"/>
+ <source>MythTV</source>
+ <translation>MythTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="226"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="245"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="941"/>
+- <source>Warning</source>
+- <translation>Warning</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="377"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="449"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="389"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="433"/>
+ <source>Stereo</source>
+ <translation>Stereo</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="380"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="392"/>
+ <source>5.1</source>
+ <translation>5.1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="383"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="395"/>
+ <source>7.1</source>
+ <translation>7.1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="909"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="889"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="239"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="323"/>
+ <source>Off</source>
+ <translation>Off</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1009"/>
+- <source>Edit</source>
+- <translation>Edit</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1010"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1279"/>
+- <source>Delete</source>
+- <translation>Delete</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2608"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2699"/>
+ <source>Qt</source>
+ <translation>Qt</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2612"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2694"/>
+ <source>OpenGL 2</source>
+ <translation>OpenGL 2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2614"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2696"/>
+ <source>OpenGL 1</source>
+ <translation>OpenGL 1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2618"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2690"/>
+ <source>Direct3D</source>
+ <translation>Direct3D</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="132"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="142"/>
+ <source>MythFrontend</source>
+ <translation>MythFrontend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="576"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="605"/>
+ <source>All tuners are currently busy.</source>
+ <translation>All tuners are currently busy.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="579"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="608"/>
+ <source>There are no configured tuners.</source>
+ <translation>There are no configured tuners.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="814"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="783"/>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="817"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="786"/>
+ <source>Season/Episode</source>
+ <translation>Season/Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="820"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="789"/>
+ <source>Year</source>
+ <translation>Year</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="823"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="792"/>
+ <source>User Rating</source>
+ <translation>User Rating</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="826"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="795"/>
+ <source>Runtime</source>
+ <translation>Runtime</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="829"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="798"/>
+ <source>Filename</source>
+ <translation>Filename</translation>
+ </message>
+@@ -1954,32 +1918,32 @@
+ <context>
+ <name>(DVD menu)</name>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="38"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="40"/>
+ <source>Title Menu</source>
+ <translation>Title Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="39"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="41"/>
+ <source>Root Menu</source>
+ <translation>Root Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="40"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="42"/>
+ <source>Subpicture Menu</source>
+ <translation>Subpicture Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="41"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="43"/>
+ <source>Audio Menu</source>
+ <translation>Audio Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="42"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="44"/>
+ <source>Angle Menu</source>
+ <translation>Angle Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="44"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="46"/>
+ <source>Part Menu</source>
+ <extracomment>DVD part/chapter menu</extracomment>
+ <translation>Part Menu</translation>
+@@ -2061,7 +2025,7 @@
+ <message>
+ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="56"/>
+ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="89"/>
+- <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="121"/>
++ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="122"/>
+ <source>Modulation</source>
+ <translation>Modulation</translation>
+ </message>
+@@ -2076,50 +2040,50 @@
+ <translation>Modulation (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="103"/>
++ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="102"/>
+ <source>Constellation</source>
+ <translation>Constellation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="106"/>
++ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="105"/>
+ <source>Constellation (Default: Auto)</source>
+ <translation>Constellation (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="124"/>
+- <source>Modulation, QPSK, 8PSK, QAM-16. Most DVB-S transponders use QPSK, while DVB-S2 use 8PSK. QAM-16 is not available for DVB-S2 transports.</source>
+- <translation>Modulation, QPSK, 8PSK, QAM-16. Most DVB-S transponders use QPSK, while DVB-S2 use 8PSK. QAM-16 is not available for DVB-S2 transports.</translation>
++ <location filename="../libs/libmythtv/channelscan/modulationsetting.h" line="125"/>
++ <source>Modulation, QPSK, 8PSK, QAM-16, 16APSK, 32APSK. Most DVB-S transponders use QPSK, while DVB-S2 use 8PSK, 16APSK, or 32APSK. QAM-16 is not available for DVB-S2 transports.</source>
++ <translation>Modulation, QPSK, 8PSK, QAM-16, 16APSK, 32APSK. Most DVB-S transponders use QPSK, while DVB-S2 use 8PSK, 16APSK, or 32APSK. QAM-16 is not available for DVB-S2 transports.</translation>
+ </message>
+ </context>
+ <context>
+ <name>(MythFrontendMain)</name>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="307"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="326"/>
+ <source>The ScreenSetupWizard cannot be used while mythfrontend is operating in windowed mode.</source>
+ <translation>The ScreenSetupWizard cannot be used while mythfrontend is operating in windowed mode.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="618"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="669"/>
+ <source>Loading videos ...</source>
+- <translation>Loading videos ...</translation>
++ <translation>Loading Videos...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1159"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1296"/>
+ <source>Failed to open
+ &apos;%1&apos; in %2
+ Check if the video exists</source>
+ <translation>Failed to open
+ &apos;%1&apos; in %2
+-Check if the video exists</translation>
++Check if the video exists.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1193"/>
+- <location filename="../programs/mythfrontend/main.cpp" line="1219"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1330"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1356"/>
+ <source>DVD Failure</source>
+ <translation>DVD Failure</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1888"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="2074"/>
+ <source>MythTV Frontend</source>
+ <comment>Main window title</comment>
+ <translation>MythTV Frontend</translation>
+@@ -2180,7 +2144,7 @@
+ <message>
+ <location filename="../libs/libmythbase/storagegroup.cpp" line="35"/>
+ <source>MusicArt</source>
+- <translation>MusicArt</translation>
++ <translation>Music Art</translation>
+ </message>
+ </context>
+ <context>
+@@ -2197,17 +2161,17 @@
+ <translation>No Cover</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="202"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="197"/>
+ <source>Details Downloaded</source>
+ <translation>Details Downloaded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="205"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="200"/>
+ <source>Waiting for Detail Download</source>
+ <translation>Waiting for Detail Download</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videoutils.cpp" line="219"/>
++ <location filename="../libs/libmythmetadata/videoutils.cpp" line="214"/>
+ <source>No rating available.</source>
+ <translation>No rating available.</translation>
+ </message>
+@@ -2215,48 +2179,48 @@
+ <context>
+ <name>(mythcommflag)</name>
+ <message>
+- <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="313"/>
++ <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="315"/>
+ <source>Building Head Start Buffer</source>
+ <translation>Building Head Start Buffer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="351"/>
++ <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="353"/>
+ <source>Building Logo Detection Buffer</source>
+ <translation>Building Logo Detection Buffer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="382"/>
++ <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="384"/>
+ <source>Searching for Logo</source>
+ <translation>Searching for Logo</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="556"/>
+- <location filename="../programs/mythcommflag/CommDetector2.cpp" line="459"/>
+- <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="333"/>
++ <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="558"/>
++ <location filename="../programs/mythcommflag/CommDetector2.cpp" line="455"/>
++ <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="335"/>
+ <source>%1% Completed @ %2 fps.</source>
+- <translation>%1% Completed @ %2 fps.</translation>
++ <translation>%1% Completed @ %2 fps</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="560"/>
+- <location filename="../programs/mythcommflag/CommDetector2.cpp" line="464"/>
+- <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="337"/>
++ <location filename="../programs/mythcommflag/ClassicCommDetector.cpp" line="562"/>
++ <location filename="../programs/mythcommflag/CommDetector2.cpp" line="460"/>
++ <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="339"/>
+ <source>%1 Frames Completed @ %2 fps.</source>
+- <translation>%1 Frames Completed @ %2 fps.</translation>
++ <translation>%1 Frames Completed @ %2 fps</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/CommDetector2.cpp" line="590"/>
++ <location filename="../programs/mythcommflag/CommDetector2.cpp" line="586"/>
+ <source>Performing Logo Identification</source>
+ <translation>Performing Logo Identification</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="44"/>
++ <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="45"/>
+ <source>Waiting to pass preroll + head start</source>
+- <translation>Waiting to pass preroll + head start</translation>
++ <translation>Waiting to Pass Preroll + Head Start</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="158"/>
++ <location filename="../programs/mythcommflag/PrePostRollFlagger.cpp" line="159"/>
+ <source>Waiting for recording to finish</source>
+- <translation>Waiting for recording to finish</translation>
++ <translation>Waiting for Recording to Finish</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythcommflag/main.cpp" line="420"/>
+@@ -2271,709 +2235,730 @@
+ <translation>Running</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythcommflag/main.cpp" line="1211"/>
++ <location filename="../programs/mythcommflag/main.cpp" line="1215"/>
+ <source>Failed with exit status %1</source>
+ <comment>Job status</comment>
+- <translation>Failed with exit status %1</translation>
++ <translation>Failed with Exit Status %1</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythcommflag/main.cpp" line="1217"/>
+- <location filename="../programs/mythcommflag/main.cpp" line="1223"/>
++ <location filename="../programs/mythcommflag/main.cpp" line="1220"/>
+ <source>%n commercial break(s)</source>
+ <comment>Job status</comment>
+ <translation>
+- <numerusform>%n commercial break</numerusform>
+- <numerusform>%n commercial breaks</numerusform>
++ <numerusform>%n Commercial Break</numerusform>
++ <numerusform>%n Commercial Breaks</numerusform>
+ </translation>
+ </message>
+ </context>
+ <context>
+ <name>ASIConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1963"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1873"/>
++ <source>Status</source>
++ <translation>Status</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1906"/>
+ <source>Not a valid DVEO ASI card</source>
+ <translation>Not a valid DVEO ASI card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1968"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1911"/>
+ <source>Valid DVEO ASI card</source>
+- <translation>Valid DVEO ASI card</translation>
++ <translation>Valid DVEO ASI Card</translation>
+ </message>
+ </context>
+ <context>
+ <name>AlbumArtImages</name>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2019"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2059"/>
+ <source>Scanning for music album art...</source>
+- <translation>Scanning for music album art...</translation>
++ <translation>Scanning for Music Album Art...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2146"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2186"/>
+ <source>Unknown</source>
+ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2147"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2187"/>
+ <source>Front Cover</source>
+ <translation>Front Cover</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2148"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2188"/>
+ <source>Back Cover</source>
+ <translation>Back Cover</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2149"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2189"/>
+ <source>CD</source>
+ <translation>CD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2150"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2190"/>
+ <source>Inlay</source>
+ <translation>Inlay</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2151"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2191"/>
+ <source>Artist</source>
+ <translation>Artist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2163"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2203"/>
+ <source>unknown</source>
+- <translation>unknown</translation>
++ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2164"/>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2181"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2204"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2221"/>
+ <source>front</source>
+- <translation>front</translation>
++ <translation>Front</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2165"/>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2184"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2205"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2224"/>
+ <source>back</source>
+- <translation>back</translation>
++ <translation>Back</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2166"/>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2190"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2206"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2230"/>
+ <source>cd</source>
+- <translation>cd</translation>
++ <translation>CD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2167"/>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2187"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2207"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2227"/>
+ <source>inlay</source>
+- <translation>inlay</translation>
++ <translation>Inlay</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2168"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2208"/>
+ <source>artist</source>
+- <translation>artist</translation>
++ <translation>Artist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2193"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="2233"/>
+ <source>cover</source>
+- <translation>cover</translation>
++ <translation>Cover</translation>
+ </message>
+ </context>
+ <context>
+ <name>AllMusic</name>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="1678"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="1718"/>
+ <source>CD -- none</source>
+- <translation>CD -- none</translation>
++ <translation>CD - None</translation>
+ </message>
+ </context>
+ <context>
+ <name>AppearanceSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1462"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1459"/>
+ <source>Menu theme</source>
+- <translation>Menu theme</translation>
++ <translation>Menu Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1992"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2008"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1994"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2010"/>
+ <source>Display on screen</source>
+- <translation>Display on screen</translation>
++ <translation>Display On Screen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1998"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2014"/>
+ <source>Run on the specified screen or spanning all screens.</source>
+ <translation>Run on the specified screen or spanning all screens.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2008"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2024"/>
+ <source>Monitor aspect ratio</source>
+- <translation>Monitor aspect ratio</translation>
++ <translation>Monitor Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2010"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2026"/>
+ <source>16:9</source>
+ <translation>16:9</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2011"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2027"/>
+ <source>16:10</source>
+ <translation>16:10</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2012"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2028"/>
+ <source>4:3</source>
+ <translation>4:3</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2014"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2030"/>
+ <source>The aspect ratio of a Xinerama display cannot be queried from the display, so it must be specified.</source>
+ <translation>The aspect ratio of a Xinerama display cannot be queried from the display, so it must be specified.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2079"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2095"/>
+ <source>GUI width (pixels)</source>
+- <translation>GUI width (pixels)</translation>
++ <translation>GUI Width (pixels)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2083"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2099"/>
+ <source>The width of the GUI. Do not make the GUI wider than your actual screen resolution. Set to 0 to automatically scale to fullscreen.</source>
+ <translation>The width of the GUI. Do not make the GUI wider than your actual screen resolution. Set to 0 to automatically scale to fullscreen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2095"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2111"/>
+ <source>GUI height (pixels)</source>
+- <translation>GUI height (pixels)</translation>
++ <translation>GUI Height (pixels)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2099"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2115"/>
+ <source>The height of the GUI. Do not make the GUI taller than your actual screen resolution. Set to 0 to automatically scale to fullscreen.</source>
+ <translation>The height of the GUI. Do not make the GUI taller than your actual screen resolution. Set to 0 to automatically scale to fullscreen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2111"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2127"/>
+ <source>GUI X offset</source>
+- <translation>GUI X offset</translation>
++ <translation>GUI X Offset</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2115"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2131"/>
+ <source>The horizontal offset where the GUI will be displayed. May only work if run in a window.</source>
+ <translation>The horizontal offset where the GUI will be displayed. May only work if run in a window.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2125"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2141"/>
+ <source>GUI Y offset</source>
+- <translation>GUI Y offset</translation>
++ <translation>GUI Y Offset</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2129"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2145"/>
+ <source>The vertical offset where the GUI will be displayed.</source>
+ <translation>The vertical offset where the GUI will be displayed.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2139"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2155"/>
+ <source>Display size - width</source>
+- <translation>Display size - width</translation>
++ <translation>Display Size - Width</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2143"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2159"/>
+ <source>Horizontal size of the monitor or TV. Used to calculate the actual aspect ratio of the display. This will override the DisplaySize from the system.</source>
+ <translation>Horizontal size of the monitor or TV. Used to calculate the actual aspect ratio of the display. This will override the DisplaySize from the system.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2154"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2170"/>
+ <source>Display size - height</source>
+- <translation>Display size - height</translation>
++ <translation>Display Size - Height</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2158"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2174"/>
+ <source>Vertical size of the monitor or TV. Used to calculate the actual aspect ratio of the display. This will override the DisplaySize from the system.</source>
+ <translation>Vertical size of the monitor or TV. Used to calculate the actual aspect ratio of the display. This will override the DisplaySize from the system.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2170"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2186"/>
+ <source>Use GUI size for TV playback</source>
+- <translation>Use GUI size for TV playback</translation>
++ <translation>Use GUI Size for TV Playback</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2174"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2190"/>
+ <source>If enabled, use the above size for TV, otherwise use full screen.</source>
+ <translation>If enabled, use the above size for TV, otherwise use full screen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2414"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2462"/>
+ <source>Hide mouse cursor in MythTV</source>
+- <translation>Hide mouse cursor in MythTV</translation>
++ <translation>Hide Mouse Cursor in MythTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2418"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2466"/>
+ <source>Toggles mouse cursor visibility for touchscreens. By default MythTV will auto-hide the cursor if the mouse doesn&apos;t move for a period, this setting disables the cursor entirely.</source>
+ <translation>Toggles mouse cursor visibility for touchscreens. By default MythTV will auto-hide the cursor if the mouse doesn&apos;t move for a period, this setting disables the cursor entirely.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2432"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2480"/>
+ <source>Use window border</source>
+- <translation>Use window border</translation>
++ <translation>Use Window Border</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2436"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2484"/>
+ <source>Toggles between windowed and borderless operation.</source>
+ <translation>Toggles between windowed and borderless operation.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2445"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2493"/>
+ <source>Use fixed window size</source>
+- <translation>Use fixed window size</translation>
++ <translation>Use Fixed Window Size</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2449"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2497"/>
+ <source>If disabled, the video playback window can be resized</source>
+- <translation>If disabled, the video playback window can be resized</translation>
++ <translation>If disabled, the video playback window can be resized.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2458"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2506"/>
+ <source>Always On Top</source>
+ <translation>Always On Top</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2462"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2510"/>
+ <source>If enabled, MythTV will always be on top</source>
+ <translation>If enabled, MythTV will always be on top</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2470"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2519"/>
++ <source>Startup Screen Delay</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2523"/>
++ <source>The Startup Screen will show the progress of starting the frontend if frontend startup takes longer than this number of seconds.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2535"/>
++ <source>GUI text zoom percentage</source>
++ <translation>GUI Text Zoom Percentage</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2540"/>
++ <source>Adjust the themed defined font size by this percentage. mythfrontend needs restart for this to take effect.</source>
++ <translation>Adjust the themed defined font size by this percentage. Restart mythfrontend for this to take effect.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2549"/>
+ <source>Date format</source>
+- <translation>Date format</translation>
++ <translation>Date Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2473"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2528"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2552"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2607"/>
+ <source>Samples are shown using today&apos;s date.</source>
+ <translation>Samples are shown using today&apos;s date.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2479"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2534"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2558"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2613"/>
+ <source>Samples are shown using tomorrow&apos;s date.</source>
+ <translation>Samples are shown using tomorrow&apos;s date.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2515"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2594"/>
+ <source>Your preferred date format. %1</source>
+ <extracomment>%1 gives additional information regarding the date format</extracomment>
+- <translation>Your preferred date format. %1</translation>
++ <translation>Preferred Date Format (%1)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2524"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2603"/>
+ <source>Short date format</source>
+- <translation>Short date format</translation>
++ <translation>Short Date Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2569"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2648"/>
+ <source>Your preferred short date format. %1</source>
+ <extracomment>%1 gives additional information regarding the date format</extracomment>
+- <translation>Your preferred short date format. %1</translation>
++ <translation>Preferred Short Date Format (%1)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2578"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2657"/>
+ <source>Time format</source>
+- <translation>Time format</translation>
++ <translation>Time Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2593"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2672"/>
+ <source>Your preferred time format. You must choose a format with &quot;AM&quot; or &quot;PM&quot; in it, otherwise your time display will be 24-hour or &quot;military&quot; time.</source>
+ <translation>Your preferred time format. You must choose a format with &quot;AM&quot; or &quot;PM&quot; in it, otherwise your time display will be 24-hour or &quot;military&quot; time.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2606"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2685"/>
+ <source>Paint engine</source>
+- <translation>Paint engine</translation>
++ <translation>Paint Engine</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2622"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2701"/>
+ <source>This selects what MythTV uses to draw. Choosing &apos;%1&apos; is recommended, unless running on systems with broken OpenGL implementations (broken hardware or drivers or windowing systems) where only Qt works.</source>
+ <translation>This selects what MythTV uses to draw. Choosing &apos;%1&apos; is recommended, unless running on systems with broken OpenGL implementations (broken hardware or drivers or windowing systems) where only Qt works.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2951"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3056"/>
+ <source>Language</source>
+ <translation>Language</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2970"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3075"/>
+ <source>Your preferred language for the user interface.</source>
+ <translation>Your preferred language for the user interface.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3006"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3111"/>
+ <source>Guide language #%1</source>
+- <translation>Guide language #%1</translation>
++ <translation>Guide Language #%1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3012"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3117"/>
+ <source>Your #%1 preferred language for Program Guide data and captions.</source>
+ <translation>Your #%1 preferred language for Program Guide data and captions.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4200"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4476"/>
++ <source>GUI dimension</source>
++ <translation>GUI Dimension</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4498"/>
++ <source>Fullscreen</source>
++ <translation>Fullscreen</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4521"/>
+ <source>Theme / Screen Settings</source>
+ <translation>Theme / Screen Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4253"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4558"/>
+ <source>Localization</source>
+ <translation>Localization</translation>
+ </message>
+ </context>
+ <context>
+- <name>AudioAdvancedSettings</name>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1159"/>
+- <source>Stereo PCM Only</source>
+- <translation>Stereo PCM Only</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1163"/>
+- <source>Enable if your amplifier or sound decoder only supports 2 channel PCM (typically an old HDMI 1.0 device). Multichannel audio will be re-encoded to AC-3 when required</source>
+- <translation>Enable if your amplifier or sound decoder only supports 2 channel PCM (typically an old HDMI 1.0 device). Multichannel audio will be re-encoded to AC-3 when required</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1174"/>
+- <source>Override SRC quality</source>
+- <translation>Override SRC quality</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1178"/>
+- <source>Enable to override audio sample rate conversion quality.</source>
+- <translation>Enable to override audio sample rate conversion quality.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1187"/>
+- <source>Sample rate conversion</source>
+- <translation>Sample rate conversion</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1189"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1199"/>
+- <source>Disabled</source>
+- <comment>Sample rate conversion</comment>
+- <translation>Disabled</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1190"/>
+- <source>Fastest</source>
+- <comment>Sample rate conversion</comment>
+- <translation>Fastest</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1191"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1198"/>
+- <source>Good</source>
+- <comment>Sample rate conversion</comment>
+- <translation>Good</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1192"/>
+- <source>Best</source>
+- <comment>Sample rate conversion</comment>
+- <translation>Best</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1194"/>
+- <source>Set the quality of audio sample-rate conversion. &quot;%1&quot; (default) provides the best compromise between CPU usage and quality. &quot;%2&quot; lets the audio device handle sample-rate conversion.</source>
+- <translation>Set the quality of audio sample-rate conversion. &quot;%1&quot; (default) provides the best compromise between CPU usage and quality. &quot;%2&quot; lets the audio device handle sample-rate conversion.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1208"/>
+- <source>Force audio device output to 48kHz</source>
+- <translation>Force audio device output to 48kHz</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1211"/>
+- <source>Force audio sample rate to 48kHz. Some audio devices will report various rates, but they ultimately crash.</source>
+- <translation>Force audio sample rate to 48kHz. Some audio devices will report various rates, but they ultimately crash.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1221"/>
+- <source>Separate digital output device</source>
+- <translation>Separate digital output device</translation>
+- </message>
++ <name>AudioConfigScreen</name>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1225"/>
+- <source>Use a distinct digital output device from default. (default is not checked)</source>
+- <translation>Use a distinct digital output device from default. (default is not checked)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1234"/>
+- <source>Digital output device</source>
+- <translation>Digital output device</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1247"/>
+- <source>Audio output device to use for digital audio. This value is currently only used with ALSA and DirectX sound output.</source>
+- <translation>Audio output device to use for digital audio. This value is currently only used with ALSA and DirectX sound output.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1257"/>
+- <source>SPDIF 48kHz rate override</source>
+- <translation>SPDIF 48kHz rate override</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1261"/>
+- <source>ALSA only. By default, let ALSA determine the passthrough sampling rate. If checked set the sampling rate to 48kHz for passthrough. (default is not checked)</source>
+- <translation>ALSA only. By default, let ALSA determine the passthrough sampling rate. If checked set the sampling rate to 48kHz for passthrough. (default is not checked)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1272"/>
+- <source>HBR passthrough support</source>
+- <translation>HBR passthrough support</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1276"/>
+- <source>HBR support is required for TrueHD and DTS-HD passthrough. If unchecked, Myth will limit the passthrough bitrate to 6.144Mbit/s. This will disable True-HD passthrough, however will allow DTS-HD content to be sent as DTS-HD Hi-Res. (default is checked)</source>
+- <translation>HBR support is required for TrueHD and DTS-HD passthrough. If unchecked, Myth will limit the passthrough bitrate to 6.144Mbit/s. This will disable True-HD passthrough, however will allow DTS-HD content to be sent as DTS-HD Hi-Res. (default is checked)</translation>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="95"/>
++ <source>Scanning for available audio devices</source>
++ <translation>Scanning for Available Audio Devices...</translation>
+ </message>
+ </context>
+ <context>
+ <name>AudioConfigSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="114"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="112"/>
+ <source>Audio System</source>
+ <translation>Audio System</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="122"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="118"/>
+ <source>Rescan</source>
+ <translation>Rescan</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="123"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="119"/>
+ <source>Rescan for available audio devices. Current entry will be checked and capability entries populated.</source>
+ <translation>Rescan for available audio devices. Current entry will be checked and capability entries populated.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="158"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="127"/>
+ <source>Digital Audio Capabilities</source>
+ <translation>Digital Audio Capabilities</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="174"/>
+- <source>Test</source>
+- <translation>Test</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="175"/>
+- <source>Will play a test pattern on all configured speakers</source>
+- <translation>Will play a test pattern on all configured speakers</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="181"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="142"/>
+ <source>Advanced Audio Settings</source>
+ <translation>Advanced Audio Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="182"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="143"/>
+ <source>Enable extra audio settings. Under most usage all options should be left alone</source>
+- <translation>Enable extra audio settings. Under most usage all options should be left alone</translation>
++ <translation>Enable extra audio settings. Under most usage all options should be left alone.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="222"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="201"/>
+ <source>%1 is invalid or not useable.</source>
+ <translatorcomment>Temporary fix</translatorcomment>
+- <translation>%1 is invalid and can not be used.</translation>
++ <translation>%1 is invalid or not useable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="239"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="214"/>
+ <source>Passthrough device is invalid or not useable. Check configuration in Advanced Settings:</source>
+ <translatorcomment>Temporary fix</translatorcomment>
+- <translation>Passthrough device is invalid or can not be used. Check configuration in Advanced Settings:</translation>
++ <translation>Passthrough device is invalid or not useable. Check configuration in Advanced Settings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="447"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="431"/>
+ <source>Speaker configuration</source>
+- <translation>Speaker configuration</translation>
++ <translation>Speaker Configuration</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="452"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="436"/>
+ <source>Select the maximum number of audio channels supported by your receiver and speakers.</source>
+ <translation>Select the maximum number of audio channels supported by your receiver and speakers.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="462"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="446"/>
+ <source>Upconvert stereo to 5.1 surround</source>
+- <translation>Upconvert stereo to 5.1 surround</translation>
++ <translation>Upconvert Stereo to 5.1 Surround</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="466"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="450"/>
+ <source>If enabled, MythTV will upconvert stereo to 5.1 audio. You can enable or disable the upconversion during playback at any time.</source>
+ <translation>If enabled, MythTV will upconvert stereo to 5.1 audio. You can enable or disable the upconversion during playback at any time.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="476"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="460"/>
+ <source>Upmix Quality</source>
+ <translation>Upmix Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="478"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="462"/>
+ <source>Passive</source>
+ <translation>Passive</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="479"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="463"/>
+ <source>Hall</source>
+ <comment>Upmix Quality</comment>
+ <translation>Hall</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="480"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="464"/>
+ <source>Good</source>
+ <comment>Upmix Quality</comment>
+ <translation>Good</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="481"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="465"/>
+ <source>Best</source>
+ <comment>Upmix Quality</comment>
+ <translation>Best</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="483"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="467"/>
+ <source>Set the audio surround-upconversion quality.</source>
+ <translation>Set the audio surround-upconversion quality.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="492"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="476"/>
+ <source>Dolby Digital</source>
+ <translation>Dolby Digital</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="496"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="480"/>
+ <source>Enable if your amplifier or sound decoder supports AC-3/Dolby Digital. You must use a digital connection. Uncheck if using an analog connection.</source>
+ <translation>Enable if your amplifier or sound decoder supports AC-3/Dolby Digital. You must use a digital connection. Uncheck if using an analog connection.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="506"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="490"/>
+ <source>DTS</source>
+ <translation>DTS</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="510"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="494"/>
+ <source>Enable if your amplifier or sound decoder supports DTS. You must use a digital connection. Uncheck if using an analog connection</source>
+- <translation>Enable if your amplifier or sound decoder supports DTS. You must use a digital connection. Uncheck if using an analog connection</translation>
++ <translation>Enable if your amplifier or sound decoder supports DTS. You must use a digital connection. Uncheck if using an analog connection.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="520"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="504"/>
+ <source>E-AC-3</source>
+ <translation>E-AC-3</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="524"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="508"/>
+ <source>Enable if your amplifier or sound decoder supports E-AC-3 (DD+). You must use a HDMI connection.</source>
+ <translation>Enable if your amplifier or sound decoder supports E-AC-3 (DD+). You must use a HDMI connection.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="533"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="517"/>
+ <source>TrueHD</source>
+ <translation>TrueHD</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="537"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="521"/>
+ <source>Enable if your amplifier or sound decoder supports Dolby TrueHD. You must use a HDMI connection.</source>
+ <translation>Enable if your amplifier or sound decoder supports Dolby TrueHD. You must use a HDMI connection.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="546"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="530"/>
+ <source>DTS-HD</source>
+ <translation>DTS-HD</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="550"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="534"/>
+ <source>Enable if your amplifier or sound decoder supports DTS-HD. You must use a HDMI connection.</source>
+ <translation>Enable if your amplifier or sound decoder supports DTS-HD. You must use a HDMI connection.</translation>
+ </message>
+-</context>
+-<context>
+- <name>AudioDeviceComboBox</name>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="53"/>
+- <source>Audio output device</source>
+- <translation>Audio output device</translation>
+- </message>
+-</context>
+-<context>
+- <name>AudioMixerSettings</name>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1022"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1038"/>
+ <source>Use internal volume controls</source>
+- <translation>Use internal volume controls</translation>
++ <translation>Use Internal Volume Controls</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1026"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1042"/>
+ <source>If enabled, MythTV will control the PCM and master mixer volume. Disable this option if you prefer to control the volume externally (for example, using your amplifier) or if you use an external mixer program.</source>
+- <translation>If enabled, MythTV will control the PCM and master mixer volume. Disable this option if you prefer to control the volume externally (for example, using your amplifier) or if you use an external mixer program.</translation>
++ <translation>If enabled, MythTV will control the PCM and master mixer volume. Disable if you prefer to control the volume externally (for example, using your amplifier) or if you use an external mixer program.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1037"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1058"/>
+ <source>Mixer device</source>
+- <translation>Mixer device</translation>
++ <translation>Mixer Device</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1063"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1069"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1084"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1090"/>
+ <source>software</source>
+- <translation>software</translation>
++ <translation>Software</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1066"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1087"/>
+ <source>Setting the mixer device to &quot;%1&quot; lets MythTV control the volume of all audio at the expense of a slight quality loss.</source>
+ <translation>Setting the mixer device to &quot;%1&quot; lets MythTV control the volume of all audio at the expense of a slight quality loss.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1074"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1096"/>
+ <source>PCM</source>
+ <translation>PCM</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1075"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1097"/>
+ <source>Master</source>
+ <translation>Master</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1081"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1103"/>
+ <source>Mixer controls</source>
+- <translation>Mixer controls</translation>
++ <translation>Mixer Controls</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1090"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1112"/>
+ <source>Changing the volume adjusts the selected mixer.</source>
+ <translation>Changing the volume adjusts the selected mixer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1099"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1122"/>
+ <source>Master mixer volume</source>
+- <translation>Master mixer volume</translation>
++ <translation>Master Mixer Volume</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1103"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1126"/>
+ <source>Initial volume for the Master mixer. This affects all sound created by the audio device. Note: Do not set this too low.</source>
+ <translation>Initial volume for the Master mixer. This affects all sound created by the audio device. Note: Do not set this too low.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1113"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1137"/>
+ <source>PCM mixer volume</source>
+- <translation>PCM mixer volume</translation>
++ <translation>PCM Mixer Volume</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1117"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1141"/>
+ <source>Initial volume for PCM output. Using the volume keys in MythTV will adjust this parameter.</source>
+ <translation>Initial volume for PCM output. Using the volume keys in MythTV will adjust this parameter.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1125"/>
+- <source>Audio Mixer</source>
+- <translation>Audio Mixer</translation>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1150"/>
++ <source>Stereo PCM Only</source>
++ <translation>Stereo PCM Only</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1154"/>
++ <source>Enable if your amplifier or sound decoder only supports 2 channel PCM (typically an old HDMI 1.0 device). Multichannel audio will be re-encoded to AC-3 when required</source>
++ <translation>Enable if your amplifier or sound decoder only supports 2 channel PCM (typically an old HDMI 1.0 device). Multichannel audio will be re-encoded to AC-3 when required.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1165"/>
++ <source>Override SRC quality</source>
++ <translation>Override Sample Rate Conversion Quality</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1169"/>
++ <source>Enable to override audio sample rate conversion quality.</source>
++ <translation>Enable to override audio sample rate conversion quality.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1178"/>
++ <source>Sample rate conversion</source>
++ <translation>Sample Rate Conversion</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1180"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1190"/>
++ <source>Disabled</source>
++ <comment>Sample rate conversion</comment>
++ <translation>Disabled</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1181"/>
++ <source>Fastest</source>
++ <comment>Sample rate conversion</comment>
++ <translation>Fastest</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1182"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1189"/>
++ <source>Good</source>
++ <comment>Sample rate conversion</comment>
++ <translation>Good</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1183"/>
++ <source>Best</source>
++ <comment>Sample rate conversion</comment>
++ <translation>Best</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1185"/>
++ <source>Set the quality of audio sample-rate conversion. &quot;%1&quot; (default) provides the best compromise between CPU usage and quality. &quot;%2&quot; lets the audio device handle sample-rate conversion.</source>
++ <translation>Set the quality of audio sample-rate conversion. &quot;%1&quot; (default) provides the best compromise between CPU usage and quality. &quot;%2&quot; lets the audio device handle sample-rate conversion.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1199"/>
++ <source>Force audio device output to 48kHz</source>
++ <translation>Force Audio Device Output to 48kHz</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1202"/>
++ <source>Force audio sample rate to 48kHz. Some audio devices will report various rates, but they ultimately crash.</source>
++ <translation>Force audio sample rate to 48kHz. Some audio devices will report various rates, but they ultimately crash.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1212"/>
++ <source>Separate digital output device</source>
++ <translation>Separate Digital Output Device</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1216"/>
++ <source>Use a distinct digital output device from default. (default is not checked)</source>
++ <translation>Use a distinct digital output device from default. (default is not enabled)</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1226"/>
++ <source>Digital output device</source>
++ <translation>Digital Output Device</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1240"/>
++ <source>Audio output device to use for digital audio. This value is currently only used with ALSA and DirectX sound output.</source>
++ <translation>Audio output device to use for digital audio. This value is currently only used with ALSA and DirectX sound output.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1250"/>
++ <source>SPDIF 48kHz rate override</source>
++ <translation>SPDIF 48kHz Rate Override</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1254"/>
++ <source>ALSA only. By default, let ALSA determine the passthrough sampling rate. If checked set the sampling rate to 48kHz for passthrough. (default is not checked)</source>
++ <translation>ALSA only. If disabled, ALSA determines the passthrough sampling rate. If enabled, set the sampling rate to 48kHz for passthrough. (default is disabled)</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1265"/>
++ <source>HBR passthrough support</source>
++ <translation>HBR Passthrough Support</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1269"/>
++ <source>HBR support is required for TrueHD and DTS-HD passthrough. If unchecked, Myth will limit the passthrough bitrate to 6.144Mbit/s. This will disable True-HD passthrough, however will allow DTS-HD content to be sent as DTS-HD Hi-Res. (default is checked)</source>
++ <translation>HBR support is required for TrueHD and DTS-HD passthrough. If disabled, Myth will limit the passthrough bitrate to 6.144Mbit/s. This will disable True-HD passthrough, however will allow DTS-HD content to be sent as DTS-HD Hi-Res. (default is disabled)</translation>
++ </message>
++</context>
++<context>
++ <name>AudioDeviceComboBox</name>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="33"/>
++ <source>Audio output device</source>
++ <translation>Audio Output Device</translation>
+ </message>
+ </context>
+ <context>
+@@ -2981,57 +2966,57 @@
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="325"/>
+ <source>Invalid or unuseable audio device</source>
+- <translation>Invalid or unuseable audio device</translation>
++ <translation>Invalid or Unuseable Audio Device</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="336"/>
+ <source> (%1 connected to %2)</source>
+- <translation> (%1 connected to %2)</translation>
++ <translation> (%1 Connected to %2)</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="342"/>
+ <source> (No connection detected)</source>
+- <translation> (No connection detected)</translation>
++ <translation> (No Connection Detected)</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="360"/>
+ <source>
+ Device supports up to %1</source>
+ <translation>
+-Device supports up to %1</translation>
++Device Supports Up to %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="415"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="416"/>
+ <source>OSS device</source>
+- <translation>OSS device</translation>
++ <translation>OSS Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="476"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="477"/>
+ <source>Use JACK default sound server.</source>
+ <translation>Use JACK default sound server.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="507"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="508"/>
+ <source>CoreAudio default output</source>
+- <translation>CoreAudio default output</translation>
++ <translation>CoreAudio Default Output</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="556"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="557"/>
+ <source>PulseAudio default sound server.</source>
+ <translation>PulseAudio default sound server.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="569"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="570"/>
+ <source>OpenSLES default output.</source>
+ <translation>OpenSLES default output.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="583"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="584"/>
+ <source>OpenMAX analog output.</source>
+ <translation>OpenMAX analog output.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="592"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="593"/>
+ <source>OpenMAX HDMI output.</source>
+ <translation>OpenMAX HDMI output.</translation>
+ </message>
+@@ -3072,22 +3057,22 @@
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="181"/>
+ <source>Error while registering new jack port: %1</source>
+- <translation>Error while registering new jack port: %1</translation>
++ <translation>ERROR: Registering new jack port: %1</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="202"/>
+ <source>Error. Unable to set process callback?!</source>
+- <translation>Error. Unable to set process callback?!</translation>
++ <translation>ERROR: Unable to set process callback!</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="204"/>
+ <source>Error. Unable to set xrun callback?!</source>
+- <translation>Error. Unable to set xrun callback?!</translation>
++ <translation>ERROR: Unable to set xrun callback!</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="206"/>
+ <source>Error. Unable to set graph order change callback?!</source>
+- <translation>Error. Unable to set graph order change callback?!</translation>
++ <translation>ERROR: Unable to set graph order change callback!</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="211"/>
+@@ -3095,31 +3080,31 @@
+ <translation>Calling jack_activate failed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="620"/>
++ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="619"/>
+ <source>Calling jack_connect failed on port: %1
+ </source>
+ <translation>Calling jack_connect failed on port: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="634"/>
++ <location filename="../libs/libmyth/audio/audiooutputjack.cpp" line="633"/>
+ <source>Error closing Jack output device. Error: %1</source>
+- <translation>Error closing Jack output device. Error: %1</translation>
++ <translation>ERROR: Closing Jack output device. Error: %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>AudioPlayer</name>
+ <message>
+- <location filename="../libs/libmythtv/audioplayer.cpp" line="162"/>
++ <location filename="../libs/libmythtv/audioplayer.cpp" line="161"/>
+ <source>Audio Player</source>
+ <translation>Audio Player</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/audioplayer.cpp" line="139"/>
++ <location filename="../libs/libmythtv/audioplayer.cpp" line="138"/>
+ <source>Unable to create AudioOutput.</source>
+ <translation>Unable to create AudioOutput.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/audioplayer.cpp" line="161"/>
++ <location filename="../libs/libmythtv/audioplayer.cpp" line="160"/>
+ <source>Disabling Audio</source>
+ <translation>Disabling Audio</translation>
+ </message>
+@@ -3127,68 +3112,68 @@
+ <context>
+ <name>AudioSetupWizard</name>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="94"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="91"/>
+ <source>Select from one of the audio devices detected on your system. When satisfied, you can test audio before moving on. If you fail to configure audio, video playback may fail as well.</source>
+- <translation>Select from one of the audio devices detected on your system. When satisfied, you can test audio before moving on. If you fail to configure audio, video playback may fail as well.</translation>
++ <translation>Select from one of the audio devices detected on your system. When satisfied, you can test audio before moving on. If you fail to configure audio, video playback may fail as well.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="99"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="96"/>
+ <source>Select the number of speakers you have.</source>
+ <translation>Select the number of speakers you have.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="103"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="100"/>
+ <source>Select this checkbox if your receiver is capable of playing DTS.</source>
+- <translation>Select this checkbox if your receiver is capable of playing DTS.</translation>
++ <translation>Enable if your receiver is capable of playing DTS.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="105"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="102"/>
+ <source>Select this checkbox if your receiver is capable of playing AC-3 (Dolby Digital).</source>
+- <translation>Select this checkbox if your receiver is capable of playing AC-3 (Dolby Digital).</translation>
++ <translation>Enable if your receiver is capable of playing AC-3 (Dolby Digital).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="107"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="104"/>
+ <source>Select this checkbox if your receiver is capable of playing E-AC-3 (Dolby Digital Plus).</source>
+- <translation>Select this checkbox if your receiver is capable of playing E-AC-3 (Dolby Digital Plus).</translation>
++ <translation>Enable if your receiver is capable of playing E-AC-3 (Dolby Digital Plus).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="109"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="106"/>
+ <source>Select this checkbox if your receiver is capable of playing TrueHD.</source>
+- <translation>Select this checkbox if your receiver is capable of playing TrueHD.</translation>
++ <translation>Enable if your receiver is capable of playing TrueHD.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="111"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="108"/>
+ <source>Select this checkbox if your receiver is capable of playing DTS-HD.</source>
+- <translation>Select this checkbox if your receiver is capable of playing DTS-HD.</translation>
++ <translation>Enable if your receiver is capable of playing DTS-HD.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="115"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="112"/>
+ <source>Test your audio settings by playing noise through each speaker.</source>
+ <translation>Test your audio settings by playing noise through each speaker.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="117"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="114"/>
+ <source>Save these changes and move on to the next configuration step.</source>
+ <translation>Save these changes and move on to the next configuration step.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="119"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="116"/>
+ <source>Return to the previous configuration step.</source>
+ <translation>Return to the previous configuration step.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="122"/>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="430"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="119"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="427"/>
+ <source>Test Speakers</source>
+ <translation>Test Speakers</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="128"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="125"/>
+ <source>Discovering audio devices...</source>
+- <translation>Discovering audio devices...</translation>
++ <translation>Discovering Audio Devices...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="452"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="448"/>
+ <source>Stop Speaker Test</source>
+ <translation>Stop Speaker Test</translation>
+ </message>
+@@ -3201,83 +3186,113 @@
+ <translation>Audio Configuration Testing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="778"/>
+- <source>%1 is invalid or not useable.</source>
+- <translation>%1 is invalid and can not be used.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="781"/>
+- <source>Warning</source>
+- <translation>Warning</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="786"/>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="887"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="835"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="937"/>
+ <source>Test All</source>
+ <translation>Test All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="787"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="836"/>
+ <source>Start all channels test</source>
+- <translation>Start all channels test</translation>
++ <translation>Start All Channels Test</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="800"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="777"/>
+ <source>Front Left</source>
+ <translation>Front Left</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="804"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="773"/>
++ <source>Will play a test pattern on all configured speakers</source>
++ <translation>Will play a test pattern on all configured speakers.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="778"/>
++ <source>Start front left channel test</source>
++ <translation>Start Front Left Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="784"/>
+ <source>Front Right</source>
+ <translation>Front Right</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="813"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="785"/>
++ <source>Start front right channel test</source>
++ <translation>Start Front Right Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="791"/>
+ <source>Rear Left</source>
+ <translation>Rear Left</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="821"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="792"/>
++ <source>Start rear left channel test</source>
++ <translation>Start Rear Left Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="798"/>
+ <source>Rear Right</source>
+ <translation>Rear Right</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="821"/>
+- <source>Rear Center</source>
+- <translation>Rear Center</translation>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="799"/>
++ <source>Start rear right channel test</source>
++ <translation>Start Rear Right Channel Test</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="830"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="806"/>
+ <source>LFE</source>
+ <translation>LFE</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="837"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="807"/>
++ <source>Start LFE channel test</source>
++ <translation>Start LFE Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="814"/>
+ <source>Surround Left</source>
+ <translation>Surround Left</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="841"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="815"/>
++ <source>Start surround left channel test</source>
++ <translation>Start Surround Left Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="821"/>
+ <source>Surround Right</source>
+ <translation>Surround Right</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="845"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="822"/>
++ <source>Start surround right channel test</source>
++ <translation>Start Surround Right Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="828"/>
+ <source>Center</source>
+ <translation>Center</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="864"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="829"/>
++ <source>Start center channel test</source>
++ <translation>Start Center Channel Test</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="841"/>
+ <source>Use Highest Quality Mode</source>
+ <translation>Use Highest Quality Mode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="865"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="842"/>
+ <source>Use the highest audio quality settings supported by your audio card. This will be a good place to start troubleshooting potential errors</source>
+- <translation>Use the highest audio quality settings supported by your audio card. This will be a good place to start troubleshooting potential errors</translation>
++ <translation>Use the highest audio quality settings supported by your audio card. This will be a good place to start troubleshooting potential errors.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="938"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="955"/>
+ <source>Audio device is invalid or not useable.</source>
+ <translation>Audio device is invalid or not useable.</translation>
+ </message>
+@@ -3285,7 +3300,7 @@
+ <context>
+ <name>AudioTestThread</name>
+ <message>
+- <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="637"/>
++ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="639"/>
+ <source>Unable to create AudioOutput.</source>
+ <translation>Unable to create AudioOutput.</translation>
+ </message>
+@@ -3293,7 +3308,7 @@
+ <context>
+ <name>BDInfo</name>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="121"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="212"/>
+ <source>Could not open Blu-ray device: %1</source>
+ <translation>Could not open Blu-ray device: %1</translation>
+ </message>
+@@ -3301,29 +3316,29 @@
+ <context>
+ <name>BDRingBuffer</name>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="336"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="431"/>
+ <source>Title %1 chapter %2</source>
+- <translation>Title %1 chapter %2</translation>
++ <translation>Title %1 Chapter %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="505"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="608"/>
+ <source>Could not open Blu-ray device: %1</source>
+ <translation>Could not open Blu-ray device: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="537"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="640"/>
+ <source>Could not open Blu-ray device %1, failed to decrypt</source>
+- <translation>Could not open Blu-ray device %1, failed to decrypt</translation>
++ <translation>Failed to decrypt, could not open Blu-ray device: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="588"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="691"/>
+ <source>Unable to find any Blu-ray compatible titles</source>
+- <translation>Unable to find any Blu-ray compatible titles</translation>
++ <translation>Unable to find any Blu-ray compatible titles.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="688"/>
++ <location filename="../libs/libmythtv/Bluray/bdringbuffer.cpp" line="797"/>
+ <source>Unable to find any usable Blu-ray titles</source>
+- <translation>Unable to find any usable Blu-ray titles</translation>
++ <translation>Unable to find any usable Blu-ray titles.</translation>
+ </message>
+ </context>
+ <context>
+@@ -3336,159 +3351,128 @@
+ <message>
+ <location filename="../libs/libmyth/backendselect.cpp" line="358"/>
+ <source>Please enter the backend access PIN</source>
+- <translation>Please enter the backend access PIN</translation>
++ <translation>Please enter the backend access PIN:</translation>
++ </message>
++</context>
++<context>
++ <name>BackendSettings</name>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="129"/>
++ <source>Listen on All IP Addresses</source>
++ <translation>Listen on All IP Addresses</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="131"/>
++ <source>Allow this backend to receive connections on any IP Address assigned to it. Recommended for most users for ease and reliability.</source>
++ <translation>Allow this backend to receive connections on any IP Address assigned to it. Recommended for most users for ease and reliability.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="894"/>
++ <source>Host Address Backend Setup</source>
++ <translation>Host Address Backend Setup</translation>
+ </message>
+ </context>
+ <context>
+ <name>BookmarkDialog</name>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="205"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="224"/>
+ <source>DVD/Video contains a bookmark</source>
+- <translation>DVD/Video contains a bookmark</translation>
++ <translation>DVD/Video Contains a Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="206"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="225"/>
+ <source>Play from bookmark</source>
+- <translation>Play from bookmark</translation>
++ <translation>Play from Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="207"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="226"/>
+ <source>Play from beginning</source>
+- <translation>Play from beginning</translation>
++ <translation>Play from Beginning</translation>
+ </message>
+ </context>
+ <context>
+ <name>CaptureCardEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3752"/>
+- <source>Capture cards</source>
+- <translation>Capture cards</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3508"/>
++ <source>New capture card</source>
++ <translation>New Capture Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3796"/>
+- <source>Capture Card Menu</source>
+- <translation>Capture Card Menu</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3540"/>
++ <source>Error getting list of cards for this host. Unable to delete capturecards for %1</source>
++ <translation>Error getting list of cards for this host. Unable to delete capture cards for %1.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3797"/>
+- <source>Edit...</source>
+- <translation>Edit...</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3798"/>
+- <source>Delete...</source>
+- <translation>Delete...</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3557"/>
++ <source>Capture cards</source>
++ <translation>Capture Cards</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3815"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3488"/>
+ <source>Are you sure you want to delete ALL capture cards on %1?</source>
+ <translation>Are you sure you want to delete ALL capture cards on %1?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3817"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3852"/>
+- <source>Yes, delete capture cards</source>
+- <translation>Yes, delete capture cards</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3818"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3853"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3876"/>
+- <source>No, don&apos;t</source>
+- <translation>No, don&apos;t</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3834"/>
+- <source>Error getting list of cards for this host</source>
+- <translation>Error getting list of cards for this host</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3835"/>
+- <source>Unable to delete capturecards for %1</source>
+- <translation>Unable to delete capture cards for %1</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3850"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3498"/>
+ <source>Are you sure you want to delete ALL capture cards?</source>
+ <translation>Are you sure you want to delete ALL capture cards?</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3874"/>
+- <source>Are you sure you want to delete this capture card?</source>
+- <translation>Are you sure you want to delete this capture card?</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3875"/>
+- <source>Yes, delete capture card</source>
+- <translation>Yes, delete capture card</translation>
+- </message>
+ </context>
+ <context>
+ <name>CardInput</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3456"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3112"/>
+ <source>Scan for channels</source>
+- <translation>Scan for channels</translation>
++ <translation>Scan for Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3458"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3146"/>
+ <source>Use channel scanner to find channels for this input.</source>
+ <translation>Use channel scanner to find channels for this input.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3460"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3113"/>
+ <source>Fetch channels from listings source</source>
+- <translation>Fetch channels from listings source</translation>
++ <translation>Fetch Channels from Listings Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3462"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3149"/>
+ <source>This uses the listings data source to provide the channels for this input.</source>
+ <translation>This uses the listings data source to provide the channels for this input.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3464"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3151"/>
+ <source>This can take a long time to run.</source>
+ <translation>This can take a long time to run.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3545"/>
+- <source>Create Input Group</source>
+- <translation>Create Input Group</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3546"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3239"/>
+ <source>Enter new group name</source>
+- <translation>Enter new group name</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3554"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3577"/>
+- <source>Error</source>
+- <translation>Error</translation>
++ <translation>Enter group name:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3555"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3255"/>
+ <source>Sorry, this Input Group name cannot be blank.</source>
+- <translation>Sorry, this Input Group name cannot be blank.</translation>
++ <translation>Sorry, the name cannot be blank.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3578"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3275"/>
+ <source>Sorry, this Input Group name is already in use.</source>
+- <translation>Sorry, this Input Group name is already in use.</translation>
++ <translation>Sorry, this name is already in use.</translation>
+ </message>
+ </context>
+ <context>
+ <name>CardInputEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3987"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3625"/>
+ <source>Input connections</source>
+- <translation>Input connections</translation>
++ <translation>Input Connections</translation>
+ </message>
+ </context>
+ <context>
+ <name>CetonConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2426"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2135"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+@@ -3496,253 +3480,223 @@
+ <context>
+ <name>CetonDeviceID</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2377"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2091"/>
+ <source>Device ID</source>
+ <translation>Device ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2378"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2092"/>
+ <source>Device ID of Ceton device</source>
+- <translation>Device ID of Ceton device</translation>
+- </message>
+-</context>
+-<context>
+- <name>ChannelCheckBox</name>
+- <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="90"/>
+- <source>%1 %2</source>
+- <comment>Channel number with channel name</comment>
+- <extracomment>%1 is the channel number, %2 is the channel name</extracomment>
+- <translation>%1 %2</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="92"/>
+- <source>Select/Unselect channels for this channel group</source>
+- <translation>Select/Unselect channels for this channel group</translation>
++ <translation>Device ID of Ceton Tuner</translation>
+ </message>
+ </context>
+ <context>
+ <name>ChannelEditor</name>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="112"/>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="270"/>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="317"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="111"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="268"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="315"/>
+ <source>Channel Name</source>
+ <translation>Channel Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="109"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="108"/>
+ <source>Delete all channels on currently selected source(s).</source>
+- <translation>Delete all channels on currently selected source(s).</translation>
++ <translation>Delete All Channels on Currently Selected Source(s).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="113"/>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="274"/>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="322"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="112"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="272"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="320"/>
+ <source>Channel Number</source>
+ <translation>Channel Number</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="120"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="119"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="132"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="131"/>
+ <source>(Unassigned)</source>
+ <translation>(Unassigned)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="143"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="142"/>
+ <source>Starts the channel scanner.</source>
+ <translation>Starts the channel scanner.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="147"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="146"/>
+ <source>Starts the icon downloader</source>
+- <translation>Starts the icon downloader</translation>
++ <translation>Starts the icon downloader.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="153"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="152"/>
+ <source>Allows you to edit the transports directly. This is rarely required unless you are using a satellite dish and must enter an initial frequency to for the channel scanner to try.</source>
+ <translation>Allows you to edit the transports directly. This is rarely required unless you are using a satellite dish and must enter an initial frequency to for the channel scanner to try.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="247"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="245"/>
+ <source>(Add New Channel)</source>
+ <translation>(Add New Channel)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="405"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="403"/>
+ <source>Delete channel &apos;%1&apos;?</source>
+- <translation>Delete channel &apos;%1&apos;?</translation>
++ <translation>Delete Channel &apos;%1&apos;?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="429"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="427"/>
+ <source>Delete ALL channels?</source>
+- <translation>Delete ALL channels?</translation>
++ <translation>Delete All Channels?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="430"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="428"/>
+ <source>Delete all unassigned channels?</source>
+- <translation>Delete all unassigned channels?</translation>
++ <translation>Delete All Unassigned Channels?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="431"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="429"/>
+ <source>Delete all channels on %1?</source>
+- <translation>Delete all channels on %1?</translation>
++ <translation>Delete All Channels on %1?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="472"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="478"/>
+ <source>Channel Options</source>
+ <translation>Channel Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="482"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="488"/>
+ <source>Edit</source>
+ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="487"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="493"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="526"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="545"/>
+ <source>Add some channels first!</source>
+ <translation>Add some channels first!</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="547"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="566"/>
+ <source>Icon Import Options</source>
+ <translation>Icon Import Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="557"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="576"/>
+ <source>Download all icons...</source>
+- <translation>Download all icons...</translation>
++ <translation>Download All Icons...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="558"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="577"/>
+ <source>Rescan for missing icons...</source>
+- <translation>Rescan for missing icons...</translation>
++ <translation>Rescan for Missing Icons...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="560"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="579"/>
+ <source>Download icon for %1</source>
+- <translation>Download icon for %1</translation>
++ <translation>Download Icon for %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>ChannelGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/channelgroup.cpp" line="201"/>
++ <location filename="../libs/libmythtv/channelgroup.cpp" line="243"/>
+ <source>All Channels</source>
+ <translation>All Channels</translation>
+ </message>
+ </context>
+ <context>
+- <name>ChannelGroupConfig</name>
++ <name>ChannelGroupSetting</name>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="113"/>
+- <source>%1 Channel Group - Page %2 of %3</source>
+- <translation>%1 Channel Group - Page %2 of %3</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4696"/>
++ <source>Group name</source>
++ <translation>Group Name</translation>
+ </message>
+ </context>
+ <context>
+- <name>ChannelGroupEditor</name>
+- <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="139"/>
+- <source>Channel Groups</source>
+- <translation>Channel Groups</translation>
+- </message>
++ <name>ChannelGroupSettings</name>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="153"/>
+- <source>Create New Channel Group</source>
+- <translation>Create New Channel Group</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2754"/>
++ <source>Remember last channel group</source>
++ <translation>Remember Last Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="154"/>
+- <source>Enter group name or press SELECT to enter text via the On Screen Keyboard</source>
+- <translation>Enter group name or press SELECT to enter text via the On Screen Keyboard</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2756"/>
++ <source>If enabled, the EPG will initially display only the channels from the last channel group selected. Pressing &quot;4&quot; will toggle channel group.</source>
++ <translation>If enabled, the EPG will initially display only the channels from the last channel group selected. Pressing &quot;4&quot; will toggle channel group.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="181"/>
+- <source>Delete &apos;%1&apos; Channel group?</source>
+- <translation>Delete &apos;%1&apos; Channel group?</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2771"/>
++ <source>Default channel group</source>
++ <translation>Default Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="186"/>
+- <source>Yes, delete group</source>
+- <translation>Yes, delete group</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2777"/>
++ <source>All Channels</source>
++ <translation>All Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="187"/>
+- <source>No, Don&apos;t delete group</source>
+- <translation>No, Don&apos;t delete group</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2784"/>
++ <source>Default channel group to be shown in the EPG. Pressing GUIDE key will toggle channel group.</source>
++ <translation>Default channel group to be shown in the EPG. Pressing GUIDE key will toggle channel group.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelgroupsettings.cpp" line="239"/>
+- <source>(Create new group)</source>
+- <translation>(Create new group)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4593"/>
++ <source>Select/Unselect channels for this channel group</source>
++ <translation>Select channels for this channel group.</translation>
+ </message>
+ </context>
+ <context>
+- <name>ChannelGroupSettings</name>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2675"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2735"/>
+- <source>Remember last channel group</source>
+- <translation>Remember last channel group</translation>
+- </message>
++ <name>ChannelGroupsSetting</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2677"/>
+- <source>If enabled, the EPG will initially display only the channels from the last channel group selected. Pressing &quot;4&quot; will toggle channel group.</source>
+- <translation>If enabled, the EPG will initially display only the channels from the last channel group selected. Pressing &quot;4&quot; will toggle channel group.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4760"/>
++ <source>Channel Groups</source>
++ <translation>Channel Groups</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2692"/>
+- <source>Default channel group</source>
+- <translation>Default channel group</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4767"/>
++ <source>(Create New Channel Group)</source>
++ <translation>(Create New Channel Group)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2698"/>
+- <source>All Channels</source>
+- <translation>All Channels</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4771"/>
++ <source>Favorites</source>
++ <translation>Favorites</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2705"/>
+- <source>Default channel group to be shown in the EPG. Pressing GUIDE key will toggle channel group.</source>
+- <translation>Default channel group to be shown in the EPG. Pressing GUIDE key will toggle channel group.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4804"/>
++ <source>Enter the name of the new channel group</source>
++ <translation>Enter group name:</translation>
+ </message>
+ </context>
+ <context>
+ <name>ChannelImporter</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="47"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1291"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1358"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1421"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1547"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1629"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1632"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1716"/>
+ <source>Channel Importer</source>
+ <translation>Channel Importer</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="49"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="50"/>
+ <source>Found %n channel(s)</source>
+ <translation>
+- <numerusform>Found %n channel</numerusform>
+- <numerusform>Found %n channels</numerusform>
++ <numerusform>Found %n Channel</numerusform>
++ <numerusform>Found %n Channels</numerusform>
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="50"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="51"/>
+ <source>Failed to find any new channels!</source>
+ <translation>Failed to find any new channels!</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="51"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="52"/>
+ <source>Failed to find any channels.</source>
+ <translation>Failed to find any channels.</translation>
+ </message>
+@@ -3800,7 +3754,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1132"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1163"/>
+ <source>Found %n transport(s):
+ </source>
+ <extracomment>%n is the number of transports</extracomment>
+@@ -3812,148 +3766,155 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1133"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1164"/>
+ <source>Channels: FTA Enc Dec
+ </source>
+ <translation>Channels: FTA Enc Dec
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1147"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1178"/>
+ <source>Unique: prog %1 atsc %2 atsc minor %3 channum %4
+ </source>
+ <translation>Unique: prog %1 atsc %2 atsc minor %3 channum %4
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1150"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1181"/>
+ <source>Max atsc major count: %1</source>
+ <translation>Max atsc major count: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1282"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1343"/>
+ <source>Delete all</source>
+- <translation>Delete all</translation>
++ <translation>Delete All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1283"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1344"/>
+ <source>Set all invisible</source>
+- <translation>Set all invisible</translation>
++ <translation>Set All Invisible</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1285"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1352"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1415"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1346"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1422"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1494"/>
+ <source>Ignore all</source>
+- <translation>Ignore all</translation>
++ <translation>Ignore All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1308"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1373"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1436"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1369"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1443"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1515"/>
+ <source>Do you want to:</source>
+ <translation>Do you want to:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1310"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1371"/>
+ <source>1. Delete all</source>
+- <translation>1. Delete all</translation>
++ <translation>1. Delete All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1312"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1373"/>
+ <source>2. Set all invisible</source>
+- <translation>2. Set all invisible</translation>
++ <translation>2. Set All Invisible</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1315"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1376"/>
+ <source>4. Ignore all</source>
+- <translation>4. Ignore all</translation>
++ <translation>4. Ignore All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1334"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1395"/>
+ <source>Please enter either 1, 2 or 4:</source>
+- <translation>Please enter either 1, 2 or 4:</translation>
++ <translation>Please enter 1, 2 or 4:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1350"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1420"/>
+ <source>Insert all</source>
+- <translation>Insert all</translation>
++ <translation>Insert All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1351"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1421"/>
+ <source>Insert manually</source>
+- <translation>Insert manually</translation>
++ <translation>Insert Manually</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1375"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1445"/>
+ <source>1. Insert all</source>
+- <translation>1. Insert all</translation>
++ <translation>1. Insert All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1377"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1447"/>
+ <source>2. Insert manually</source>
+- <translation>2. Insert manually</translation>
++ <translation>2. Insert Manually</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1379"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1442"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1449"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1521"/>
+ <source>3. Ignore all</source>
+- <translation>3. Ignore all</translation>
++ <translation>3. Ignore All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1396"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1459"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1466"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1538"/>
+ <source>Please enter either 1, 2, or 3:</source>
+- <translation>Please enter either 1, 2, or 3:</translation>
++ <translation>Please enter 1, 2, or 3:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1413"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1492"/>
+ <source>Update all</source>
+- <translation>Update all</translation>
++ <translation>Update All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1414"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1493"/>
+ <source>Update manually</source>
+- <translation>Update manually</translation>
++ <translation>Update Manually</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1438"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1517"/>
+ <source>1. Update all</source>
+- <translation>1. Update all</translation>
++ <translation>1. Update All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1440"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1519"/>
+ <source>2. Update manually</source>
+- <translation>2. Update manually</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1485"/>
+- <source>Suggest</source>
+- <translation>Suggest</translation>
++ <translation>2. Update Manually</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1532"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1615"/>
+ <source>Channel %1 was found to be in conflict with other channels.</source>
+ <translation>Channel %1 was found to be in conflict with other channels.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1543"/>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1625"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1581"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1626"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1710"/>
+ <source>Please enter a unique channel number.</source>
+ <translation>Please enter a unique channel number.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1571"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1559"/>
++ <source>Edit</source>
++ <translation>Edit</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1630"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1714"/>
++ <source>Default value is %1</source>
++ <translation>Default value is %1</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1656"/>
+ <source>Please enter a non-conflicting channel number (or type &apos;%1&apos; to skip, &apos;%2&apos; to skip all):</source>
+ <translation>Please enter a non-conflicting channel number (or type &apos;%1&apos; to skip, &apos;%2&apos; to skip all):</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1614"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1699"/>
+ <source>You chose to manually insert channel %1.</source>
+ <translation>You chose to manually insert channel %1.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1658"/>
++ <location filename="../libs/libmythtv/channelscan/channelimporter.cpp" line="1745"/>
+ <source>Please enter a non-conflicting channel number (or type &apos;%1&apos; to skip, &apos;%2&apos; to skip all): </source>
+ <extracomment>%1 is the translation of &quot;cancel&quot;, %2 of &quot;cancel all&quot;</extracomment>
+ <translation>Please enter a non-conflicting channel number (or type &apos;%1&apos; to skip, &apos;%2&apos; to skip all): </translation>
+@@ -3962,12 +3923,12 @@
+ <context>
+ <name>ChannelRecPriority</name>
+ <message>
+- <location filename="../programs/mythfrontend/channelrecpriority.cpp" line="165"/>
++ <location filename="../programs/mythfrontend/channelrecpriority.cpp" line="164"/>
+ <source>Channel Options</source>
+ <translation>Channel Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/channelrecpriority.cpp" line="181"/>
++ <location filename="../programs/mythfrontend/channelrecpriority.cpp" line="180"/>
+ <source>Program List</source>
+ <translation>Program List</translation>
+ </message>
+@@ -3975,48 +3936,48 @@
+ <context>
+ <name>ChannelScanner</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="192"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="225"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="213"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="246"/>
+ <source>Error tuning to transport</source>
+- <translation>Error tuning to transport</translation>
++ <translation>Error Tuning to Transport</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="244"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="265"/>
+ <source>Error scanning MPTS in IPTV</source>
+- <translation>Error scanning MPTS in IPTV</translation>
++ <translation>Error Scanning MPTS in IPTV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="267"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="294"/>
+ <source>Programmer Error: Failed to handle tune complete.</source>
+- <translation>Programmer Error: Failed to handle tune complete.</translation>
++ <translation>Programmer Error: Failed to Handle Tune Complete.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="301"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="329"/>
+ <source>Failed to parse &apos;%1&apos;</source>
+- <translation>Failed to parse &apos;%1&apos;</translation>
++ <translation>Failed to Parse &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="303"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="331"/>
+ <source>Programmer Error : incorrect card type</source>
+- <translation>Programmer Error : incorrect card type</translation>
++ <translation>Programmer Error : Incorrect Card Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="304"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="332"/>
+ <source>Failed to open &apos;%1&apos;</source>
+- <translation>Failed to open &apos;%1&apos;</translation>
++ <translation>Failed to Open &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="375"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="430"/>
+ <source>Programmer Error: No Device</source>
+ <translation>Programmer Error: No Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="454"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="511"/>
+ <source>Programmer Error: Channel not created</source>
+- <translation>Programmer Error: Channel not created</translation>
++ <translation>Programmer Error: Channel Not Created</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="465"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner.cpp" line="522"/>
+ <source>Channel could not be opened.</source>
+ <translation>Channel could not be opened.</translation>
+ </message>
+@@ -4024,78 +3985,46 @@
+ <context>
+ <name>ChannelScannerGUI</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui.cpp" line="62"/>
+- <source>Scanning</source>
+- <translation>Scanning</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui.cpp" line="171"/>
+- <source>ScanWizard</source>
+- <translation>ScanWizard</translation>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui.cpp" line="74"/>
++ <source>Scan complete</source>
++ <translation>Scan Complete</translation>
+ </message>
+ </context>
+ <context>
+ <name>ChannelScannerGUIScanPane</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="41"/>
+- <source>Scan Progress</source>
+- <translation>Scan Progress</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="46"/>
+- <source>Status</source>
+- <translation>Status</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="47"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="112"/>
+ <source>Tuning</source>
+ <translation>Tuning</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="61"/>
+- <source>Rotor Movement</source>
+- <translation>Rotor Movement</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="71"/>
+- <source>Signal Strength</source>
+- <translation>Signal Strength</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="77"/>
+- <source>Signal/Noise</source>
+- <translation>Signal/Noise</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="85"/>
+- <source>Scan</source>
+- <translation>Scan</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="90"/>
+- <source>Stop Scan</source>
+- <translation>Stop Scan</translation>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="128"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="137"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="146"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="182"/>
++ <source>%1%</source>
++ <translation>%1: {1%?}</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="121"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="155"/>
+ <source>Locked</source>
+ <translation>Locked</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="121"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="155"/>
+ <source>No Lock</source>
+ <translation>No Lock</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="132"/>
+- <source>Scan Progress %1</source>
+- <translation>Scan Progress %1</translation>
++ <location filename="../libs/libmythtv/channelscan/channelscanner_gui_scan_pane.cpp" line="167"/>
++ <source>%1</source>
++ <translation>%1</translation>
+ </message>
+ </context>
+ <context>
+ <name>ChannelUtil</name>
+ <message>
+- <location filename="../libs/libmythtv/channelutil.cpp" line="1301"/>
++ <location filename="../libs/libmythtv/channelutil.cpp" line="1297"/>
+ <source>UNKNOWN</source>
+ <comment>Synthesized callsign</comment>
+ <translation>UNKNOWN</translation>
+@@ -4104,7 +4033,7 @@
+ <context>
+ <name>ChannelWizard</name>
+ <message>
+- <location filename="../programs/mythtv-setup/channeleditor.cpp" line="30"/>
++ <location filename="../programs/mythtv-setup/channeleditor.cpp" line="27"/>
+ <source>Channel Options</source>
+ <translation>Channel Options</translation>
+ </message>
+@@ -4112,37 +4041,37 @@
+ <context>
+ <name>CommBreakMap</name>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="236"/>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="368"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="232"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="364"/>
+ <source>Skip %1</source>
+ <extracomment>%1 is the skip time</extracomment>
+- <translation>Skip %1</translation>
++ <translation>Skip Commercial %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="241"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="237"/>
+ <source>Commercial: %1</source>
+ <extracomment>%1 is the skip time</extracomment>
+ <translation>Commercial: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="272"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="268"/>
+ <source>Skipping Back.</source>
+- <translation>Skipping Back.</translation>
++ <translation>Skipping Back</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="290"/>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="316"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="286"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="312"/>
+ <source>Start of program.</source>
+- <translation>Start of program.</translation>
++ <translation>Start of Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="300"/>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="344"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="296"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="340"/>
+ <source>At End, cannot Skip.</source>
+- <translation>At End, cannot Skip.</translation>
++ <translation>At End, Cannot Skip</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/commbreakmap.cpp" line="362"/>
++ <location filename="../libs/libmythtv/commbreakmap.cpp" line="358"/>
+ <source>Too Far %1</source>
+ <extracomment>%1 is the skip time</extracomment>
+ <translation>Too Far %1</translation>
+@@ -4163,273 +4092,273 @@
+ <message>
+ <location filename="../programs/mythfrontend/customedit.cpp" line="129"/>
+ <source>&lt;New rule&gt;</source>
+- <translation>&lt;New rule&gt;</translation>
++ <translation>&lt;New Rule&gt;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="238"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="236"/>
+ <source>Match an exact title</source>
+- <translation>Match an exact title</translation>
++ <translation>Match an Exact Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="248"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="246"/>
+ <source>Match this series</source>
+- <translation>Match this series</translation>
++ <translation>Match This Series</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="255"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="253"/>
+ <source>Match words in the title</source>
+- <translation>Match words in the title</translation>
++ <translation>Match Words in the Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="264"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="262"/>
+ <source>Match words in the subtitle</source>
+- <translation>Match words in the subtitle</translation>
++ <translation>Match Words in the Subtitle</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="275"/>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="281"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="273"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="279"/>
+ <source>Match this episode</source>
+- <translation>Match this episode</translation>
++ <translation>Match This Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="286"/>
+ <source>Match an exact episode</source>
+- <translation>Match an exact episode</translation>
++ <translation>Match an Exact Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="296"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="294"/>
+ <source>Match in any descriptive field</source>
+- <translation>Match in any descriptive field</translation>
++ <translation>Match in Any Descriptive Field</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="304"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="302"/>
+ <source>New episodes only</source>
+- <translation>New episodes only</translation>
++ <translation>New Episodes Only</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="310"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="308"/>
+ <source>Exclude unidentified episodes</source>
+- <translation>Exclude unidentified episodes</translation>
++ <translation>Exclude Unidentified Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="316"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="314"/>
+ <source>First showing of each episode</source>
+- <translation>First showing of each episode</translation>
++ <translation>First Showing of Each Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="322"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="320"/>
+ <source>Last showing of each episode</source>
+- <translation>Last showing of each episode</translation>
++ <translation>Last Showing of Each Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="328"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="326"/>
+ <source>Anytime on a specific day of the week</source>
+- <translation>Anytime on a specific day of the week</translation>
++ <translation>Anytime on a Specific Day of the Week</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="335"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="333"/>
+ <source>Only on weekdays (Monday through Friday)</source>
+- <translation>Only on weekdays (Monday through Friday)</translation>
++ <translation>Only on Weekdays (Monday Through Friday)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="342"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="340"/>
+ <source>Only on weekends</source>
+- <translation>Only on weekends</translation>
++ <translation>Only on Weekends</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="365"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="363"/>
+ <source>Only on a specific station</source>
+- <translation>Only on a specific station</translation>
++ <translation>Only on a Specific Station</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="374"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="372"/>
+ <source>Exclude one station</source>
+- <translation>Exclude one station</translation>
++ <translation>Exclude One Station</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="380"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="378"/>
+ <source>Match related callsigns</source>
+- <translation>Match related callsigns</translation>
++ <translation>Match Related Callsigns</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="386"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="384"/>
+ <source>Only channels from the Favorites group</source>
+- <translation>Only channels from the Favorites group</translation>
++ <translation>Only Channels from the Favorites Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="466"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="464"/>
+ <source>Category type (%1)</source>
+ <comment>List of hardcoded category types</comment>
+- <translation>Category type (%1)</translation>
++ <translation>Category Type (%1)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="748"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="759"/>
+ <source>Replace as a search</source>
+- <translation>Replace as a search</translation>
++ <translation>Replace as a Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="750"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="761"/>
+ <source>Store as a search</source>
+- <translation>Store as a search</translation>
++ <translation>Store as a Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="754"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="765"/>
+ <source>Replace as an example</source>
+- <translation>Replace as an example</translation>
++ <translation>Replace as an Example</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="756"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="767"/>
+ <source>Store as an example</source>
+- <translation>Store as an example</translation>
++ <translation>Store as an Example</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="783"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="794"/>
+ <source>Power Search rules no longer require a leading &quot;AND&quot;.</source>
+ <translation>Power Search rules no longer require a leading &quot;AND&quot;.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="787"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="798"/>
+ <source>Power Search rules cannot include semicolon ( ; ) </source>
+- <translation>Power Search rules cannot include semicolon ( ; ) </translation>
++ <translation>Power Search rules cannot include semicolon ( ; ).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="394"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="392"/>
+ <source>Only channels from a specific video source</source>
+- <translation>Only channels from a specific video source</translation>
++ <translation>Only Channels from a Specific Video Source</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="349"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="347"/>
+ <source>Only in prime time</source>
+- <translation>Only in prime time</translation>
++ <translation>Only in Prime Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="357"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="355"/>
+ <source>Not in prime time</source>
+- <translation>Not in prime time</translation>
++ <translation>Not in Prime Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="400"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="398"/>
+ <source>Only channels marked as commercial free</source>
+- <translation>Only channels marked as commercial free</translation>
++ <translation>Only Channels Marked as Commercial Free</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="407"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="405"/>
+ <source>Only shows marked as HDTV</source>
+- <translation>Only shows marked as HDTV</translation>
++ <translation>Only Shows Marked as HDTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="413"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="411"/>
+ <source>Only shows marked as widescreen</source>
+- <translation>Only shows marked as widescreen</translation>
++ <translation>Only Shows Marked as Widescreen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="419"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="417"/>
+ <source>Exclude H.264 encoded streams (EIT only)</source>
+- <translation>Exclude H.264 encoded streams (EIT only)</translation>
++ <translation>Exclude H.264 Encoded Streams (EIT Only)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="425"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="423"/>
+ <source>Only shows with in-vision signing</source>
+- <translation>Only shows with in-vision signing</translation>
++ <translation>Only Shows with In-vision Signing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="431"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="429"/>
+ <source>Only shows with in-vision subtitles</source>
+- <translation>Only shows with in-vision subtitles</translation>
++ <translation>Only Shows with In-vision Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="437"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="435"/>
+ <source>Limit by category</source>
+- <translation>Limit by category</translation>
++ <translation>Limit by Category</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="446"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="444"/>
+ <source>All matches for a genre (Data Direct)</source>
+- <translation>All matches for a genre (Data Direct)</translation>
++ <translation>All Matches for a Genre (Data Direct)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="457"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="455"/>
+ <source>Limit by MPAA or VCHIP rating (Data Direct)</source>
+- <translation>Limit by MPAA or VCHIP rating (Data Direct)</translation>
++ <translation>Limit by MPAA or VCHIP Rating (Data Direct)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="473"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="471"/>
+ <source>Limit movies by the year of release</source>
+- <translation>Limit movies by the year of release</translation>
++ <translation>Limit Movies by the Year of Release</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="480"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="478"/>
+ <source>Minimum star rating (0.0 to 1.0 for movies only)</source>
+- <translation>Minimum star rating (0.0 to 1.0 for movies only)</translation>
++ <translation>Minimum Star Rating (0.0 to 1.0 for Movies Only)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="486"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="484"/>
+ <source>Person named in the credits (Data Direct)</source>
+- <translation>Person named in the credits (Data Direct)</translation>
++ <translation>Person Named in the Credits (Data Direct)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="507"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="505"/>
+ <source>Re-record SDTV in HDTV (disable duplicate matching)</source>
+ <translation>Re-record SDTV in HDTV (disable duplicate matching)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="517"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="515"/>
+ <source>Multiple sports teams (complete example)</source>
+- <translation>Multiple sports teams (complete example)</translation>
++ <translation>Multiple Sports Teams (complete example)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="525"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="523"/>
+ <source>Sci-fi B-movies (complete example)</source>
+ <translation>Sci-fi B-movies (complete example)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="534"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="532"/>
+ <source>SportsCenter Overnight (complete example - use FindDaily)</source>
+ <translation>SportsCenter Overnight (complete example - use FindDaily)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="543"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="541"/>
+ <source>Movie of the Week (complete example - use FindWeekly)</source>
+ <translation>Movie of the Week (complete example - use FindWeekly)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="553"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="551"/>
+ <source>First Episodes (complete example for Data Direct)</source>
+ <translation>First Episodes (complete example for Data Direct)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="728"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="739"/>
+ <source>Current Example</source>
+ <translation>Current Example</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="919"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="930"/>
+ <source>Replace</source>
+ <translation>Replace</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="918"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="929"/>
+ <source>as a search</source>
+ <translation>as a search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="763"/>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="912"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="774"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="923"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="788"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="799"/>
+ <source>statement terminators.</source>
+ <translation>statement terminators.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="802"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="813"/>
+ <source>An error was found when checking</source>
+ <translation>An error was found when checking</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/customedit.cpp" line="804"/>
++ <location filename="../programs/mythfrontend/customedit.cpp" line="815"/>
+ <source>The database error was</source>
+ <translation>The database error was</translation>
+ </message>
+@@ -4590,301 +4519,239 @@
+ <context>
+ <name>DVBConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4124"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3743"/>
+ <source>Could not open card %1</source>
+- <translation>Could not open card %1</translation>
++ <translation>Could Not Open Card %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4125"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3744"/>
+ <source>Could not get card info for card %1</source>
+- <translation>Could not get card info for card %1</translation>
++ <translation>Could Not Get Card Info for %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4330"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3916"/>
+ <source>DiSEqC (Switch, LNB, and Rotor Configuration)</source>
+ <translation>DiSEqC (Switch, LNB, and Rotor Configuration)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4331"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3917"/>
+ <source>Input and satellite settings.</source>
+ <translation>Input and satellite settings.</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4322"/>
+- <source>Recording Options</source>
+- <translation>Recording Options</translation>
+- </message>
+ </context>
+ <context>
+ <name>DVBSignalMonitor</name>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="54"/>
++ <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="55"/>
+ <source>Bit Error Rate</source>
+ <translation>Bit Error Rate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="56"/>
++ <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="57"/>
+ <source>Uncorrected Blocks</source>
+ <translation>Uncorrected Blocks</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="58"/>
++ <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="59"/>
+ <source>Rotor Progress</source>
+ <translation>Rotor Progress</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="224"/>
++ <location filename="../libs/libmythtv/recorders/dvbsignalmonitor.cpp" line="225"/>
+ <source>Error: stream handler died</source>
+- <translation>Error: stream handler died</translation>
++ <translation>Error: Stream Handler Died</translation>
+ </message>
+ </context>
+ <context>
+ <name>DVDInfo</name>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="63"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="65"/>
+ <source>Failed to open device at %1</source>
+- <translation>Failed to open device at %1</translation>
++ <translation>Failed to Open Device %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>DVDRingBuffer</name>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="474"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="476"/>
+ <source>Title %1 chapter %2</source>
+- <translation>Title %1 chapter %2</translation>
++ <translation>Title %1 Chapter %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="497"/>
++ <location filename="../libs/libmythtv/DVD/dvdringbuffer.cpp" line="507"/>
+ <source>Failed to open DVD device at %1</source>
+- <translation>Failed to open DVD device at %1</translation>
++ <translation>Failed to Open DVD Device at %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>DataDirectLineupSelector</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="366"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="522"/>
+ <source>Fetching lineups from %1...</source>
+- <translation>Fetching lineups from %1...</translation>
++ <translation>Fetching Lineups from %1...</translation>
+ </message>
+-</context>
+-<context>
+- <name>DatabaseSettings</name>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="17"/>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="150"/>
+- <source>Use custom identifier for frontend preferences</source>
+- <translation>Use custom identifier for frontend preferences</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="528"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="534"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="548"/>
++ <source>DataDirect</source>
++ <translation>DataDirect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="29"/>
+- <source>Backend Server Wakeup settings</source>
+- <translation>Backend Server Wakeup settings</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="533"/>
++ <source>Fetching of lineups failed</source>
++ <translation>Fetching Lineups Failed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="44"/>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="145"/>
+- <source>Database Configuration %1/%2</source>
+- <translation>Database Configuration %1/%2</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="547"/>
++ <source>Fetching of lineups complete</source>
++ <translation>Fetching Lineups Complete</translation>
++ </message>
++</context>
++<context>
++ <name>DatabaseSettings</name>
++ <message>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="81"/>
++ <source>Use custom identifier for frontend preferences</source>
++ <translation>Use Custom Identifier for Frontend Preferences</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="51"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="22"/>
+ <source>All database settings take effect when you restart this program.</source>
+ <translation>All database settings take effect when you restart this program.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="54"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="26"/>
+ <source>MythTV could not connect to the database. Please verify your database settings below.</source>
+ <translation>MythTV could not connect to the database. Please verify your database settings below.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="61"/>
+- <source>Database Server Settings</source>
+- <translation>Database Server Settings</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="67"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="33"/>
+ <source>The host name or IP address of the machine hosting the database. This information is required.</source>
+- <translation>The host name or IP address of the machine hosting the database. This information is required.</translation>
++ <translation>The hostname or IP address of the machine hosting the database. This information is required.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="77"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="39"/>
+ <source>Ping test server?</source>
+- <translation>Ping test server?</translation>
++ <translation>Ping Test Server</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="78"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="41"/>
+ <source>Test basic host connectivity using the ping command. Turn off if your host or network don&apos;t support ping (ICMP ECHO) packets</source>
+ <translation>Test basic host connectivity using the ping command. Turn off if your host or network don&apos;t support ping (ICMP ECHO) packets</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="96"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="50"/>
+ <source>The port number the database is running on. Leave blank if using the default port (3306).</source>
+- <translation>The port number the database is running on. Leave blank if using the default port (3306).</translation>
++ <translation>The port number the database is running on. Leave blank if using the default port (3306).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="103"/>
+- <source>Database name</source>
+- <translation>Database name</translation>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="17"/>
++ <source>Database Configuration</source>
++ <translation>Database Configuration</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="31"/>
++ <source>Hostname</source>
++ <translation>Hostname</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="48"/>
++ <source>Port</source>
++ <translation>Port</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="105"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="59"/>
+ <source>The name of the database. This information is required.</source>
+ <translation>The name of the database. This information is required.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="113"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="66"/>
+ <source>The user name to use while connecting to the database. This information is required.</source>
+ <translation>The user name to use while connecting to the database. This information is required.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="123"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="74"/>
+ <source>The password to use while connecting to the database. This information is required.</source>
+ <translation>The password to use while connecting to the database. This information is required.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="153"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="84"/>
+ <source>If this frontend&apos;s host name changes often, check this box and provide a network-unique name to identify it. If unchecked, the frontend machine&apos;s local host name will be used to save preferences in the database.</source>
+ <translation>If this frontend&apos;s host name changes often, check this box and provide a network-unique name to identify it. If unchecked, the frontend machine&apos;s local host name will be used to save preferences in the database.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="165"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="95"/>
+ <source>Custom identifier</source>
+- <translation>Custom identifier</translation>
++ <translation>Custom Identifier</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="167"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="97"/>
+ <source>An identifier to use while saving the settings for this frontend.</source>
+ <translation>An identifier to use while saving the settings for this frontend.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="181"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="104"/>
+ <source>Enable database server wakeup</source>
+- <translation>Enable database server wakeup</translation>
++ <translation>Enable Database Server Wakeup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="183"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="106"/>
+ <source>If enabled, the frontend will use database wakeup parameters to reconnect to the database server.</source>
+ <translation>If enabled, the frontend will use database wakeup parameters to reconnect to the database server.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="190"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="112"/>
+ <source>Reconnect time</source>
+- <translation>Reconnect time</translation>
++ <translation>Reconnect Time</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="192"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="114"/>
+ <source>The time in seconds to wait for the server to wake up.</source>
+ <translation>The time in seconds to wait for the server to wake up.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="198"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="119"/>
+ <source>Retry attempts</source>
+- <translation>Retry attempts</translation>
++ <translation>Retry Attempts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="200"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="121"/>
+ <source>The number of retries to wake the server before the frontend gives up.</source>
+ <translation>The number of retries to wake the server before the frontend gives up.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="206"/>
+- <source>Wake command</source>
+- <translation>Wake command</translation>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="127"/>
++ <source>Wake command or MAC</source>
++ <translation>Wake Command or MAC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="208"/>
+- <source>The command executed on this frontend to wake up the database server (eg. sudo /etc/init.d/mysql restart).</source>
+- <translation>The command executed on this frontend to wake up the database server (eg. sudo /etc/init.d/mysql restart).</translation>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="129"/>
++ <source>The command executed on this frontend or server MAC to wake up the database server (eg. sudo /etc/init.d/mysql restart or 32:D2:86:00:17:A8).</source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="238"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="145"/>
+ <source>Required fields are marked with an asterisk (*).</source>
+ <translation>Required fields are marked with an asterisk (*).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="244"/>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="258"/>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="262"/>
+- <location filename="../libs/libmyth/dbsettings.cpp" line="266"/>
+- <source>* %1</source>
+- <comment>Required field</comment>
+- <extracomment>%1 is the required field name</extracomment>
+- <translation>* %1</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="144"/>
+- <source>Database Settings</source>
+- <translation>Database Settings</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="144"/>
+- <source> (Requires edit privileges)</source>
+- <translation> (Requires edit privileges)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="153"/>
+- <source>Scanner Exclusions</source>
+- <translation>Scanner Exclusions</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="154"/>
+- <source>Comma-separated list of filenames/directory names to be ignored when scanning. Glob wildcards * and ? are valid.</source>
+- <translation>Comma-separated list of filenames/directory names to be ignored when scanning. Glob wildcards * and ? are valid.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="165"/>
+- <source>Start Gallery when media inserted</source>
+- <translation>Start Gallery when media inserted</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="166"/>
+- <source>Set to automatically start Gallery when media (USB/CD&apos;s containing images) are inserted.</source>
+- <translation>Set to automatically start Gallery when media (USB/CD&apos;s containing images) are inserted.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="176"/>
++ <location filename="../libs/libmyth/dbsettings.cpp" line="72"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="178"/>
+- <source>When set all actions that modify the filesystem or database are protected (copy, move, transform, hiding, covers). Hidden items cannot be viewed. Applies to all frontends.
+-Disabled by an empty password. Privileges persist until Gallery exits to main menu.</source>
+- <translation>When set all actions that modify the filesystem or database are protected (copy, move, transform, hiding, covers). Hidden items cannot be viewed. Applies to all frontends.
+-Disabled by an empty password. Privileges persist until Gallery exits to main menu.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="193"/>
+- <source>Reset Image Database</source>
+- <translation>Reset Image Database</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="194"/>
+- <source>Clears the database and thumbnails for the Image Storage Group. A rescan will be required. Images for local media will persist.</source>
+- <translation>Clears the database and thumbnails for the Image Storage Group. A rescan will be required. Images for local media will persist.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="202"/>
+- <source>Clear Now!</source>
+- <translation>Clear Now!</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="203"/>
+- <source>Warning! This will erase settings for: hidden images, directory covers and re-orientations. You will have to set them again after re-scanning.</source>
+- <translation>Warning! This will erase settings for: hidden images, directory covers and re-orientations. You will have to set them again after re-scanning.</translation>
+- </message>
+ </context>
+ <context>
+ <name>DeleteMap</name>
+ <message>
+ <location filename="../libs/libmythtv/deletemap.cpp" line="82"/>
+ <source>(Nothing to undo)</source>
+- <translation>(Nothing to undo)</translation>
++ <translation>(Nothing to Undo)</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/deletemap.cpp" line="88"/>
+ <source>(Nothing to redo)</source>
+- <translation>(Nothing to redo)</translation>
++ <translation>(Nothing to Redo)</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/deletemap.cpp" line="99"/>
+@@ -4903,7 +4770,7 @@
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/deletemap.cpp" line="124"/>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="524"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="523"/>
+ <source>Delete</source>
+ <extracomment>Delete the current cut or preserved region</extracomment>
+ <translation>Delete</translation>
+@@ -4954,56 +4821,56 @@
+ <translation>error</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="197"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="196"/>
+ <source>cut</source>
+ <translation>cut</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="208"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="207"/>
+ <source>Edit</source>
+ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="213"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="212"/>
+ <source>%3 (%1 of %2)</source>
+ <extracomment>example: &quot;13:24 (10:23 of 24:37)&quot;</extracomment>
+ <translation>%3 (%1 of %2)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="283"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="282"/>
+ <source>Reverse Cuts</source>
+ <translation>Reverse Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="501"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="500"/>
+ <source>New Cut</source>
+ <translation>New Cut</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="543"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="542"/>
+ <source>Move Mark</source>
+ <translation>Move Mark</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="741"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="739"/>
+ <source>Load Detected Commercials</source>
+ <translation>Load Detected Commercials</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/deletemap.cpp" line="779"/>
++ <location filename="../libs/libmythtv/deletemap.cpp" line="777"/>
+ <source>Load Auto-saved Cuts</source>
+- <translation>Load Auto-saved Cuts</translation>
++ <translation>Load Auto-Saved Cuts</translation>
+ </message>
+ </context>
+ <context>
+ <name>DeletedExpireOptions</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="374"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="458"/>
+ <source>Auto-Expire instead of delete recording</source>
+- <translation>Auto-Expire instead of delete recording</translation>
++ <translation>Auto-Expire Instead of Delete Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="378"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="462"/>
+ <source>If enabled, move deleted recordings to the &apos;Deleted&apos; recgroup and turn on autoexpire instead of deleting immediately.</source>
+ <translation>If enabled, move deleted recordings to the &apos;Deleted&apos; recgroup and turn on autoexpire instead of deleting immediately.</translation>
+ </message>
+@@ -5011,256 +4878,238 @@
+ <context>
+ <name>DemoConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2552"/>
+- <source>A local MPEG file used to simulate a recording. Must be entered as file:/path/movie.mpg</source>
+- <translation>A local MPEG file used to simulate a recording. Must be entered as file:/path/movie.mpg</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2260"/>
++ <source>A local MPEG file used to simulate a recording.</source>
++ <translation>A local MPEG file used to simulate a recording.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2560"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2267"/>
+ <source>File info</source>
+- <translation>File info</translation>
++ <translation>File Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2563"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2271"/>
+ <source>File size</source>
+- <translation>File size</translation>
++ <translation>File Size</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2589"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2290"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2592"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2293"/>
+ <source>File not readable</source>
+- <translation>File not readable</translation>
++ <translation>File Not Readable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2596"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2297"/>
+ <source>File does not exist</source>
+- <translation>File does not exist</translation>
++ <translation>File Does Not Exist</translation>
+ </message>
+ </context>
+ <context>
+ <name>DeviceTree</name>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="45"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="44"/>
+ <source>Device Type</source>
+ <translation>Device Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="46"/>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1094"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="45"/>
++ <source>Unconnected</source>
++ <translation>Unconnected</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="47"/>
+ <source>Switch</source>
+ <translation>Switch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="48"/>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1095"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="49"/>
+ <source>Rotor</source>
+ <translation>Rotor</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="52"/>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1097"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="53"/>
+ <source>LNB</source>
+ <translation>LNB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="82"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="95"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="83"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="96"/>
+ <source>Optional descriptive name for this device, to make it easier to configure settings later.</source>
+ <translation>Optional descriptive name for this device, to make it easier to configure settings later.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="114"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="126"/>
+ <source>Repeat Count</source>
+ <translation>Repeat Count</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="115"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="127"/>
+ <source>Number of repeat (command with repeat flag ON) or resend (the same command) DiSEqC commands. If value is higher than 10, command will be resend N-10 times. If value is lower than 10, command will be repeated N times. Repeat useful for unreliable DiSEqC equipment; resend useful when unreliable DiSEqC equipment has broken/unsupported repeat flag support.</source>
+ <translation>Number of repeat (command with repeat flag ON) or resend (the same command) DiSEqC commands. If value is higher than 10, command will be resend N-10 times. If value is lower than 10, command will be repeated N times. Repeat useful for unreliable DiSEqC equipment; resend useful when unreliable DiSEqC equipment has broken/unsupported repeat flag support.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="147"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="158"/>
+ <source>Switch Type</source>
+ <translation>Switch Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="148"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="159"/>
+ <source>Select the type of switch from the list.</source>
+ <translation>Select the type of switch from the list.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="150"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="161"/>
+ <source>Tone</source>
+ <translation>Tone</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="152"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="163"/>
+ <source>Voltage</source>
+ <translation>Voltage</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="154"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="165"/>
+ <source>Mini DiSEqC</source>
+ <translation>Mini DiSEqC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="156"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="167"/>
+ <source>DiSEqC</source>
+ <translation>DiSEqC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="159"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="170"/>
+ <source>DiSEqC (Uncommitted)</source>
+ <translation>DiSEqC (Uncommitted)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="162"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="173"/>
+ <source>Legacy SW21</source>
+ <translation>Legacy SW21</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="164"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="175"/>
+ <source>Legacy SW42</source>
+ <translation>Legacy SW42</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="166"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="177"/>
+ <source>Legacy SW64</source>
+ <translation>Legacy SW64</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="195"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="205"/>
+ <source>Address of switch</source>
+- <translation>Address of switch</translation>
++ <translation>Address of Switch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="196"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="206"/>
+ <source>The DiSEqC address of the switch.</source>
+ <translation>The DiSEqC address of the switch.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="222"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="232"/>
+ <source>Number of ports</source>
+- <translation>Number of ports</translation>
++ <translation>Number of Ports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="223"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="233"/>
+ <source>The number of ports this switch has.</source>
+ <translation>The number of ports this switch has.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="248"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="255"/>
+ <source>Switch Configuration</source>
+ <translation>Switch Configuration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="301"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="338"/>
+ <source>Rotor Type</source>
+ <translation>Rotor Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="302"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="339"/>
+ <source>Select the type of rotor from the list.</source>
+ <translation>Select the type of rotor from the list.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="303"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="340"/>
+ <source>DiSEqC 1.2</source>
+ <translation>DiSEqC 1.2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="305"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="342"/>
+ <source>DiSEqC 1.3 (GotoX/USALS)</source>
+ <translation>DiSEqC 1.3 (GotoX/USALS)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="333"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="369"/>
+ <source>Rotor Low Speed (deg/sec)</source>
+ <translation>Rotor Low Speed (deg/sec)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="334"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="370"/>
+ <source>To allow the approximate monitoring of rotor movement, enter the rated angular speed of the rotor when powered at 13V.</source>
+ <translation>To allow the approximate monitoring of rotor movement, enter the rated angular speed of the rotor when powered at 13V.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="364"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="399"/>
+ <source>Rotor High Speed (deg/sec)</source>
+ <translation>Rotor High Speed (deg/sec)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="365"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="400"/>
+ <source>To allow the approximate monitoring of rotor movement, enter the rated angular speed of the rotor when powered at 18V.</source>
+ <translation>To allow the approximate monitoring of rotor movement, enter the rated angular speed of the rotor when powered at 18V.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="394"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="428"/>
+ <source>E</source>
+ <comment>Eastern Hemisphere</comment>
+ <translation>E</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="397"/>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="425"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="431"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="459"/>
+ <source>W</source>
+ <comment>Western Hemisphere</comment>
+ <translation>W</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="463"/>
+- <source>Position Index %1</source>
+- <translation>Position Index %1</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="464"/>
+- <source>Orbital Position</source>
+- <translation>Orbital Position</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="486"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="501"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="490"/>
+- <source>Position #%1 (%2)</source>
+- <translation>Position #%1 (%2)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="503"/>
+- <source>Rotor Position Map</source>
+- <translation>Rotor Position Map</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="522"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="542"/>
+ <source>Rotor Configuration</source>
+ <translation>Rotor Configuration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="536"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="555"/>
+ <source>Positions</source>
+ <translation>Positions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="537"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="556"/>
+ <source>Rotor position setup.</source>
+ <translation>Rotor position setup.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="692"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="698"/>
+ <source>Single (Europe)</source>
+ <translation>Single (Europe)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="689"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="695"/>
+ <source>Universal (Europe)</source>
+ <translation>Universal (Europe)</translation>
+ </message>
+@@ -5275,128 +5124,132 @@
+ <translation>The Cartesian longitude for your location. Use negative numbers for western coordinates.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="50"/>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1096"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="51"/>
+ <source>Unicable</source>
+ <translation>Unicable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="574"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="528"/>
++ <source>Position #%1</source>
++ <translation>Position #%1</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="586"/>
+ <source>Userband</source>
+ <translation>Userband</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="575"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="587"/>
+ <source>Unicable userband ID (0-7) or sometimes (1-8)</source>
+ <translation>Unicable userband ID (0-7) or sometimes (1-8)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="601"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="612"/>
+ <source>Frequency (MHz)</source>
+ <translation>Frequency (MHz)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="602"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="613"/>
+ <source>Unicable userband frequency (usually 1210, 1420, 1680 and 2040 MHz)</source>
+ <translation>Unicable userband frequency (usually 1210, 1420, 1680 and 2040 MHz)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="628"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="638"/>
+ <source>PIN code</source>
+- <translation>PIN code</translation>
++ <translation>PIN Code</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="629"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="639"/>
+ <source>Unicable PIN code (-1 disabled, 0 - 255)</source>
+ <translation>Unicable PIN code (-1 disabled, 0 - 255)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="654"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="661"/>
+ <source>Unicable Configuration</source>
+ <translation>Unicable Configuration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="694"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="700"/>
+ <source>Circular (N. America)</source>
+ <translation>Circular (N. America)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="696"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="702"/>
+ <source>Linear (N. America)</source>
+ <translation>Linear (N. America)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="698"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="704"/>
+ <source>C Band</source>
+ <translation>C Band</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="700"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="706"/>
+ <source>DishPro Bandstacked</source>
+ <translation>DishPro Bandstacked</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="727"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="733"/>
+ <source>LNB Preset</source>
+ <translation>LNB Preset</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="728"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="734"/>
+ <source>Select the LNB preset from the list, or choose &apos;Custom&apos; and set the advanced settings below.</source>
+ <translation>Select the LNB preset from the list, or choose &apos;Custom&apos; and set the advanced settings below.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="737"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="743"/>
+ <source>Custom</source>
+ <translation>Custom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="764"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="767"/>
+ <source>LNB Type</source>
+ <translation>LNB Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="765"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="768"/>
+ <source>Select the type of LNB from the list.</source>
+ <translation>Select the type of LNB from the list.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="766"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="769"/>
+ <source>Legacy (Fixed)</source>
+ <translation>Legacy (Fixed)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="768"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="771"/>
+ <source>Standard (Voltage)</source>
+ <translation>Standard (Voltage)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="771"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="774"/>
+ <source>Universal (Voltage &amp; Tone)</source>
+ <translation>Universal (Voltage &amp; Tone)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="774"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="777"/>
+ <source>Bandstacked</source>
+ <translation>Bandstacked</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="801"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="803"/>
+ <source>LNB LOF Switch (MHz)</source>
+ <translation>LNB LOF Switch (MHz)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="802"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="804"/>
+ <source>This defines at what frequency the LNB will do a switch from high to low setting, and vice versa.</source>
+ <translation>This defines at what frequency the LNB will do a switch from high to low setting, and vice versa.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="831"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="832"/>
+ <source>LNB LOF Low (MHz)</source>
+ <translation>LNB LOF Low (MHz)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="832"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="833"/>
+ <source>This defines the offset the frequency coming from the LNB will be in low setting. For bandstacked LNBs this is the vertical/right polarization band.</source>
+ <translation>This defines the offset the frequency coming from the LNB will be in low setting. For bandstacked LNBs this is the vertical/right polarization band.</translation>
+ </message>
+@@ -5411,77 +5264,67 @@
+ <translation>This defines the offset the frequency coming from the LNB will be in high setting. For bandstacked LNBs this is the horizontal/left polarization band.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="892"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="891"/>
+ <source>LNB Reversed</source>
+ <translation>LNB Reversed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="893"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="892"/>
+ <source>This defines whether the signal reaching the LNB is reversed from normal polarization. This happens to circular signals bouncing twice on a toroidal dish.</source>
+ <translation>This defines whether the signal reaching the LNB is reversed from normal polarization. This happens to circular signals bouncing twice on a toroidal dish.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="923"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="919"/>
+ <source>LNB Configuration</source>
+ <translation>LNB Configuration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1091"/>
+- <source>Select Type of Device</source>
+- <translation>Select Type of Device</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1238"/>
+- <source>DiSEqC Device Tree</source>
+- <translation>DiSEqC Device Tree</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1257"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1203"/>
+ <source>Choose a port to use for this switch.</source>
+ <translation>Choose a port to use for this switch.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1263"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1209"/>
+ <source>Port %1</source>
+ <translation>Port %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1298"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1243"/>
+ <source>Choose a satellite position.</source>
+ <translation>Choose a satellite position.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1342"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1285"/>
+ <source>Locates the satellite you wish to point to with the longitude along the Clarke Belt of the satellite [-180..180] and its hemisphere.</source>
+ <translation>Locates the satellite you wish to point to with the longitude along the Clarke Belt of the satellite [-180..180] and its hemisphere.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1347"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1290"/>
+ <source>Longitude (degrees)</source>
+ <translation>Longitude (degrees)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1349"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1292"/>
+ <source>Hemisphere</source>
+ <translation>Hemisphere</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1350"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1293"/>
+ <source>Eastern</source>
+ <translation>Eastern</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1351"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1294"/>
+ <source>Western</source>
+ <translation>Western</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1392"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1336"/>
+ <source>Unicable satellite position (A/B)</source>
+ <translation>Unicable satellite position (A/B)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1424"/>
++ <location filename="../libs/libmythtv/diseqcsettings.cpp" line="1366"/>
+ <source>DTV Device Configuration</source>
+ <translation>DTV Device Configuration</translation>
+ </message>
+@@ -5489,29 +5332,29 @@
+ <context>
+ <name>EPGSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2921"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3026"/>
+ <source>Guide starts at channel</source>
+- <translation>Guide starts at channel</translation>
++ <translation>Guide Starts at Channel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2925"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3030"/>
+ <source>The program guide starts on this channel if it is run from outside of Live TV mode. Leave blank to enable Live TV automatic start channel.</source>
+ <translation>The program guide starts on this channel if it is run from outside of Live TV mode. Leave blank to enable Live TV automatic start channel.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2937"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3042"/>
+ <source>Record threshold</source>
+- <translation>Record threshold</translation>
++ <translation>Record Threshold</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2941"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3046"/>
+ <source>Pressing SELECT on a show that is at least this many minutes into the future will schedule a recording.</source>
+ <translation>Pressing SELECT on a show that is at least this many minutes into the future will schedule a recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4163"/>
+- <source>Program Guide %1/%2</source>
+- <translation>Program Guide %1/%2</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4425"/>
++ <source>Program Guide</source>
++ <translation>Program Guide</translation>
+ </message>
+ </context>
+ <context>
+@@ -5529,12 +5372,12 @@
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="500"/>
+ <source>Enter new category</source>
+- <translation>Enter new category</translation>
++ <translation>Enter category name:</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="663"/>
+ <source>No image found</source>
+- <translation>No image found</translation>
++ <translation>No Image Found</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="663"/>
+@@ -5545,58 +5388,58 @@
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="682"/>
+ <source>Downloading selected artwork...</source>
+- <translation>Downloading selected artwork...</translation>
++ <translation>Downloading Selected Artwork...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="738"/>
+ <source>Searching for available artwork...</source>
+- <translation>Searching for available artwork...</translation>
++ <translation>Searching for Available Artwork...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="1061"/>
+ <source>Failed to retrieve image</source>
+- <translation>Failed to retrieve image</translation>
++ <translation>Failed to Retrieve Image</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/editvideometadata.cpp" line="1063"/>
+ <source>Check logs</source>
+- <translation>Check logs</translation>
++ <translation>Check Logs</translation>
+ </message>
+ </context>
+ <context>
+ <name>EditPowerSearchPopup</name>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="525"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="509"/>
+ <source>(Any Program Type)</source>
+ <translation>(Any Program Type)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="527"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="511"/>
+ <source>Movies</source>
+ <translation>Movies</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="529"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="513"/>
+ <source>Series</source>
+ <translation>Series</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="531"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="515"/>
+ <source>Show</source>
+ <translation>Show</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="533"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="517"/>
+ <source>Sports</source>
+ <translation>Sports</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="539"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="523"/>
+ <source>(Any Genre)</source>
+ <translation>(Any Genre)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="566"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="550"/>
+ <source>(Any Channel)</source>
+ <translation>(Any Channel)</translation>
+ </message>
+@@ -5611,22 +5454,22 @@
+ <message>
+ <location filename="../programs/mythfrontend/exitprompt.cpp" line="227"/>
+ <source>Yes, Exit now</source>
+- <translation>Yes, Exit now</translation>
++ <translation>Exit</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/exitprompt.cpp" line="229"/>
+ <source>Yes, Exit and Reboot</source>
+- <translation>Yes, Exit and Reboot</translation>
++ <translation>Exit and Reboot</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/exitprompt.cpp" line="231"/>
+ <source>Yes, Exit and Shutdown</source>
+- <translation>Yes, Exit and Shutdown</translation>
++ <translation>Exit and Shutdown</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/exitprompt.cpp" line="233"/>
+ <source>Yes, Enter Standby Mode</source>
+- <translation>Yes, Enter Standby Mode</translation>
++ <translation>Enter Standby Mode</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/exitprompt.cpp" line="39"/>
+@@ -5644,12 +5487,12 @@
+ <message>
+ <location filename="../programs/mythtv-setup/exitprompt.cpp" line="85"/>
+ <source>Yes please</source>
+- <translation>Yes please</translation>
++ <translation>Fix</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/exitprompt.cpp" line="86"/>
+ <source>No, I know what I am doing</source>
+- <translation>No, I know what I am doing</translation>
++ <translation>Do Not Fix</translation>
+ </message>
+ </context>
+ <context>
+@@ -5666,79 +5509,132 @@
+ </message>
+ </context>
+ <context>
++ <name>ExternRecChannelScanner</name>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="101"/>
++ <source>Creating channel list</source>
++ <translation>Creating Channel List</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="120"/>
++ <source>Processing channels</source>
++ <translation>Processing Channels</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="138"/>
++ <source>Adding Channels</source>
++ <translation>Adding Channels</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="143"/>
++ <source>Channel #%1 : %2</source>
++ <translation>Channel #%1 : %2</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="156"/>
++ <source>Adding %1</source>
++ <translation>Adding %1</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="167"/>
++ <source>Updating %1</source>
++ <translation>Updating %1</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="196"/>
++ <source>Removing unused Channel #%1</source>
++ <translation>Removing Unused Channel #%1</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="205"/>
++ <source>Found %1 channels.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/externrecscanner.cpp" line="209"/>
++ <source>Done</source>
++ <translation>Done</translation>
++ </message>
++</context>
++<context>
+ <name>ExternalConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2611"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2312"/>
++ <source>Command path</source>
++ <translation>Command Path</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2313"/>
+ <source>A &apos;black box&apos; application controlled via stdin, status on stderr and TransportStream read from stdout</source>
+- <translation>A &apos;black box&apos; application controlled via stdin, status on stderr and TransportStream read from stdout</translation>
++ <translation>A &apos;black box&apos; application controlled via stdin, status on stderr and TransportStream read from stdout.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2616"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2318"/>
+ <source>File info</source>
+- <translation>File info</translation>
++ <translation>File Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2638"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2341"/>
+ <source>&apos;%1&apos; is valid.</source>
+ <translation>&apos;%1&apos; is valid.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2640"/>
+- <source>&apos;%1&apos; is not readable.</source>
+- <translation>&apos;%1&apos; is not readable.</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2343"/>
++ <source>WARNING: &apos;%1&apos; is not readable.</source>
++ <translation>WARNING: &apos;%1&apos; is not readable.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2642"/>
+- <source>&apos;%1&apos; is not executable.</source>
+- <translation>&apos;%1&apos; is not executable.</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2346"/>
++ <source>WARNING: &apos;%1&apos; is not executable.</source>
++ <translation>WARNING: &apos;%1&apos; is not executable.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2646"/>
+- <source>&apos;%1&apos; does not exist.</source>
+- <translation>&apos;%1&apos; does not exist.</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2351"/>
++ <source>WARNING: &apos;%1&apos; does not exist.</source>
++ <translation>WARNING: &apos;%1&apos; does not exist.</translation>
+ </message>
+ </context>
+ <context>
+ <name>FileAssocDialog</name>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="373"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="375"/>
+ <source>Select a file extension from this list to modify or delete its settings.</source>
+ <translation>Select a file extension from this list to modify or delete its settings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="375"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="377"/>
+ <source>The command to use when playing this kind of file. To use MythTV&apos;s Internal player, use &quot;Internal&quot; as the player. For all other players, you can use %s to substitute the filename.</source>
+- <translation>The command to use when playing this kind of file. To use MythTV&apos;s Internal player, use &quot;Internal&quot; as the player. For all other players, you can use %s to substitute the filename.</translation>
++ <translation>The command to use when playing this kind of file. To use MythTV&apos;s Internal player, use &quot;Internal&quot; as the player. For all other players, you can use %s to substitute the filename.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="379"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="381"/>
+ <source>When checked, this will cause the file extension to be ignored in scans of your library.</source>
+- <translation>When checked, this will cause the file extension to be ignored in scans of your library.</translation>
++ <translation>When enabled, this will cause the file extension to be ignored in scans of your library.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="381"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="383"/>
+ <source>When checked, this will cause the global player settings to override this one.</source>
+- <translation>When checked, this will cause the global player settings to override this one.</translation>
++ <translation>When enabled, this will cause the global player settings to override this one.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="383"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="385"/>
+ <source>Save and exit this screen.</source>
+- <translation>Save and exit this screen.</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="384"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="386"/>
+ <source>Create a new file extension.</source>
+ <translation>Create a new file extension.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="385"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="387"/>
+ <source>Delete this file extension.</source>
+ <translation>Delete this file extension.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofileassoc.cpp" line="444"/>
++ <location filename="../programs/mythfrontend/videofileassoc.cpp" line="446"/>
+ <source>Enter the new extension:</source>
+- <translation>Enter the new extension:</translation>
++ <translation>Enter new extension:</translation>
+ </message>
+ </context>
+ <context>
+@@ -5747,45 +5643,45 @@
+ <location filename="../libs/libmythtv/fileringbuffer.cpp" line="304"/>
+ <source>Could not open %1</source>
+ <extracomment>%1 is the filename</extracomment>
+- <translation>Could not open %1</translation>
++ <translation>Could Not Open %1</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/fileringbuffer.cpp" line="312"/>
+ <source>File too small (%1B)</source>
+ <extracomment>%1 is the file size</extracomment>
+- <translation>File too small (%1B)</translation>
++ <translation>File Too Small (%1B)</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/fileringbuffer.cpp" line="319"/>
+ <source>Improper permissions</source>
+- <translation>Improper permissions</translation>
++ <translation>Improper Permissions</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/fileringbuffer.cpp" line="325"/>
+ <source>Cannot seek in file</source>
+- <translation>Cannot seek in file</translation>
++ <translation>Cannot Seek in File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/fileringbuffer.cpp" line="374"/>
++ <location filename="../libs/libmythtv/fileringbuffer.cpp" line="376"/>
+ <source>Failed to open remote file %1</source>
+ <extracomment>%1 is the filename</extracomment>
+- <translation>Failed to open remote file %1</translation>
++ <translation>Failed to Open Remote File %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>FileTransferWorker</name>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="67"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="70"/>
+ <source>Moving</source>
+ <translation>Moving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="67"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="70"/>
+ <source>Copying</source>
+ <translation>Copying</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="113"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="116"/>
+ <source>Complete</source>
+ <translation>Complete</translation>
+ </message>
+@@ -5793,164 +5689,164 @@
+ <context>
+ <name>FirewireDesc</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1255"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1312"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+ </context>
+ <context>
+- <name>GallerySettings</name>
++ <name>GUIStartup</name>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="109"/>
+- <source>Gallery Settings</source>
+- <translation>Gallery Settings</translation>
++ <location filename="../libs/libmyth/guistartup.cpp" line="193"/>
++ <source>Do you really want to exit MythTV?</source>
++ <translation>Do you really want to exit MythTV?</translation>
+ </message>
+ </context>
+ <context>
+ <name>GallerySlideView</name>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="100"/>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="524"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="108"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="538"/>
+ <source>Hide</source>
+ <translation>Hide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="258"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="270"/>
+ <source>Slideshow Options</source>
+ <translation>Slideshow Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="262"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="274"/>
+ <source>Play Video</source>
+ <translation>Play Video</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="265"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="277"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="267"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="279"/>
+ <source>Start SlideShow</source>
+ <translation>Start SlideShow</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="270"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="282"/>
+ <source>Turn Repeat Off</source>
+ <translation>Turn Repeat Off</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="272"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="284"/>
+ <source>Turn Repeat On</source>
+ <translation>Turn Repeat On</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="279"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="291"/>
+ <source>Hide Captions</source>
+ <translation>Hide Captions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="281"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="293"/>
+ <source>Show Captions</source>
+ <translation>Show Captions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="287"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="299"/>
+ <source>More Details</source>
+ <translation>More Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="300"/>
+ <source>Less Details</source>
+ <translation>Less Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="290"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="302"/>
+ <source>Show Details</source>
+ <translation>Show Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="295"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="307"/>
+ <source>Hide Details</source>
+ <translation>Hide Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="315"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="327"/>
+ <source>Transform Options</source>
+ <translation>Transform Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="319"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="331"/>
+ <source>Rotate CW</source>
+ <translation>Rotate CW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="320"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="332"/>
+ <source>Rotate CCW</source>
+ <translation>Rotate CCW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="321"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="333"/>
+ <source>Flip Horizontal</source>
+ <translation>Flip Horizontal</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="322"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="334"/>
+ <source>Flip Vertical</source>
+ <translation>Flip Vertical</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="323"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="335"/>
+ <source>Reset to Exif</source>
+ <translation>Reset to Exif</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="327"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="339"/>
+ <source>Zoom In</source>
+ <translation>Zoom In</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="330"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="342"/>
+ <source>Zoom Out</source>
+ <translation>Zoom Out</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="332"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="344"/>
+ <source>Transforms</source>
+ <translation>Transforms</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="409"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="423"/>
+ <source>Stopped</source>
+ <translation>Stopped</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="425"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="439"/>
+ <source>Playing</source>
+ <translation>Playing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="547"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="561"/>
+ <source>Loading</source>
+ <translation>Loading</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="585"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="766"/>
+ <source>Failed to load %1</source>
+- <translation>Failed to load %1</translation>
++ <translation>Failed to Load %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="654"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="659"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="670"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="675"/>
+ <source>Start</source>
+ <translation>Start</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryslideview.cpp" line="689"/>
++ <location filename="../programs/mythfrontend/galleryslideview.cpp" line="698"/>
+ <source>End</source>
+ <extracomment>Slideshow has reached last slide</extracomment>
+ <translation>End</translation>
+@@ -5959,12 +5855,12 @@
+ <context>
+ <name>GalleryThumbView</name>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="467"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="483"/>
+ <source>Invalid Name</source>
+ <translation>Invalid Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="617"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="637"/>
+ <source>No images found.
+ Scan storage group using menu,
+ or insert/mount local media.
+@@ -5975,477 +5871,477 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="896"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="922"/>
+ <source>%L1 of %L3</source>
+ <translation>%L1 of %L3</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="953"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="981"/>
+ <source>Hidden</source>
+ <translation>Hidden</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="962"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="990"/>
+ <source>Pictures</source>
+ <translation>Pictures</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="963"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="991"/>
+ <source>Videos</source>
+ <translation>Videos</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="984"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1012"/>
+ <source>Gallery Options</source>
+ <translation>Gallery Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1001"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1029"/>
+ <source>Enable Edits</source>
+ <translation>Enable Edits</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1006"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1034"/>
+ <source>Stop Scan</source>
+ <translation>Stop Scan</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1008"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1036"/>
+ <source>Scan Storage Group</source>
+ <translation>Scan Storage Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1010"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1038"/>
+ <source>Settings</source>
+ <translation>Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1031"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1090"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1111"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1150"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1059"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1118"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1139"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1178"/>
+ <source>%L1 marked</source>
+- <translation>%L1 marked</translation>
++ <translation>%L1 Marked</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1038"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1066"/>
+ <source>Unmark File</source>
+ <translation>Unmark File</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1040"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1068"/>
+ <source>Mark File</source>
+ <translation>Mark File</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1047"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1075"/>
+ <source>Unmark Directory</source>
+ <translation>Unmark Directory</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1049"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1077"/>
+ <source>Mark Directory</source>
+ <translation>Mark Directory</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1056"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1084"/>
+ <source>Mark All</source>
+ <translation>Mark All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1061"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1089"/>
+ <source>Unmark All</source>
+ <translation>Unmark All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1062"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1090"/>
+ <source>Invert Marked</source>
+ <translation>Invert Marked</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1069"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1097"/>
+ <source>Mark</source>
+ <translation>Mark</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1094"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1122"/>
+ <source>Move Marked Into</source>
+ <translation>Move Marked Into</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1095"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1123"/>
+ <source>Copy Marked Into</source>
+ <translation>Copy Marked Into</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1097"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1125"/>
+ <source>Paste</source>
+ <translation>Paste</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1115"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1143"/>
+ <source>Rotate Marked CW</source>
+ <translation>Rotate Marked CW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1116"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1144"/>
+ <source>Rotate Marked CCW</source>
+ <translation>Rotate Marked CCW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1117"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1145"/>
+ <source>Flip Marked Horizontal</source>
+ <translation>Flip Marked Horizontal</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1118"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1146"/>
+ <source>Flip Marked Vertical</source>
+ <translation>Flip Marked Vertical</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1119"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1147"/>
+ <source>Reset Marked to Exif</source>
+ <translation>Reset Marked to Exif</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1121"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1133"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1149"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1161"/>
+ <source>Transforms</source>
+ <translation>Transforms</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1127"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1155"/>
+ <source>Rotate CW</source>
+ <translation>Rotate CW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1128"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1156"/>
+ <source>Rotate CCW</source>
+ <translation>Rotate CCW</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1129"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1157"/>
+ <source>Flip Horizontal</source>
+ <translation>Flip Horizontal</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1130"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1158"/>
+ <source>Flip Vertical</source>
+ <translation>Flip Vertical</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1131"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1159"/>
+ <source>Reset to Exif</source>
+ <translation>Reset to Exif</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1156"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1184"/>
+ <source>Hide Marked</source>
+ <translation>Hide Marked</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1158"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1186"/>
+ <source>Unhide Marked</source>
+ <translation>Unhide Marked</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1160"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1188"/>
+ <source>Delete Marked</source>
+ <translation>Delete Marked</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1171"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1199"/>
+ <source>Unhide</source>
+ <translation>Unhide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1173"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1201"/>
+ <source>Hide</source>
+ <translation>Hide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1175"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1203"/>
+ <source>Use as Cover</source>
+ <translation>Use as Cover</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1176"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1204"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1177"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1205"/>
+ <source>Rename</source>
+ <translation>Rename</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1180"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1208"/>
+ <source>Reset Cover</source>
+ <translation>Reset Cover</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1186"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1214"/>
+ <source>Create Directory</source>
+ <translation>Create Directory</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1191"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1219"/>
+ <source>Import</source>
+ <translation>Import</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1195"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1223"/>
+ <source>Eject media</source>
+- <translation>Eject media</translation>
++ <translation>Eject Media</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1200"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1228"/>
+ <source>Actions</source>
+ <translation>Actions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1215"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1241"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1243"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1269"/>
+ <source>Shuffled</source>
+ <translation>Shuffled</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1216"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1242"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1244"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1270"/>
+ <source>Random</source>
+ <translation>Random</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1217"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1243"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1245"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1271"/>
+ <source>Seasonal</source>
+ <translation>Seasonal</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1219"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1240"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1247"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1268"/>
+ <source>Ordered</source>
+ <translation>Ordered</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1222"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1252"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1250"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1280"/>
+ <source>Slideshow</source>
+ <translation>Slideshow</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1229"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1257"/>
+ <source>Directory</source>
+ <translation>Directory</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1232"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1260"/>
+ <source>Recursive</source>
+ <translation>Recursive</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1235"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1263"/>
+ <source>Current Directory</source>
+ <translation>Current Directory</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1237"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1265"/>
+ <source>Slideshow Order</source>
+ <translation>Slideshow Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1245"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1273"/>
+ <source>Change Order</source>
+ <translation>Change Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1248"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1276"/>
+ <source>Turn Repeat Off</source>
+ <translation>Turn Repeat Off</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1250"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1278"/>
+ <source>Turn Repeat On</source>
+ <translation>Turn Repeat On</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1262"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1290"/>
+ <source>Show Options</source>
+ <translation>Show Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1267"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1295"/>
+ <source>Hide Pictures</source>
+ <translation>Hide Pictures</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1268"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1296"/>
+ <source>Hide Videos</source>
+ <translation>Hide Videos</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1271"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1299"/>
+ <source>Show Videos</source>
+ <translation>Show Videos</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1271"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1299"/>
+ <source>Show Pictures</source>
+ <translation>Show Pictures</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1275"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1283"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1303"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1311"/>
+ <source>Image Captions</source>
+ <translation>Image Captions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1278"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1288"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1306"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1316"/>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1279"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1289"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1307"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1317"/>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1280"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1308"/>
+ <source>Comment</source>
+ <translation>Comment</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1281"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1290"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1309"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1318"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1286"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1292"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1314"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1320"/>
+ <source>Directory Captions</source>
+ <translation>Directory Captions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1297"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1325"/>
+ <source>Hide Hidden Items</source>
+ <translation>Hide Hidden Items</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1299"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1327"/>
+ <source>Show Hidden Items</source>
+ <translation>Show Hidden Items</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1303"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1331"/>
+ <source>Zoom Out</source>
+ <translation>Zoom Out</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1305"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1333"/>
+ <source>Zoom In</source>
+ <translation>Zoom In</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1308"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1336"/>
+ <source>Show Details</source>
+ <translation>Show Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1308"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1336"/>
+ <source>Hide Details</source>
+ <translation>Hide Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1312"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1340"/>
+ <source>Show</source>
+ <translation>Show</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1567"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1595"/>
+ <source>Do you want to delete
+ %1 ?</source>
+ <translation>Do you want to delete
+ %1 ?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1577"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1605"/>
+ <source>Do you want to delete all marked files ?</source>
+ <translation>Do you want to delete all marked files ?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1675"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1710"/>
+ <source>Enter a new name:</source>
+- <translation>Enter a new name:</translation>
++ <translation>Enter name:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1703"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1738"/>
+ <source>Enter password:</source>
+ <translation>Enter password:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1817"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1852"/>
+ <source>Enter name of new directory</source>
+- <translation>Enter name of new directory</translation>
++ <translation>Enter directory name:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1863"/>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1990"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1898"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2025"/>
+ <source>No files specified</source>
+- <translation>No files specified</translation>
++ <translation>No Files Specified</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1874"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1909"/>
+ <source>No images</source>
+- <translation>No images</translation>
++ <translation>No Images</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1901"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1936"/>
+ <source>Copying files</source>
+- <translation>Copying files</translation>
++ <translation>Copying Files</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1919"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="1954"/>
+ <source>Failed to copy %L1/%Ln file(s)</source>
+ <translation>
+- <numerusform>Failed to copy %L1/%Ln file</numerusform>
+- <numerusform>Failed to copy %L1/%Ln files</numerusform>
++ <numerusform>Failed to Copy %L1/%Ln File</numerusform>
++ <numerusform>Failed to Copy %L1/%Ln Files</numerusform>
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2007"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2042"/>
+ <source>No images specified</source>
+- <translation>No images specified</translation>
++ <translation>No Images Specified</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2035"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2070"/>
+ <source>Moving files</source>
+- <translation>Moving files</translation>
++ <translation>Moving Files</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2054"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2089"/>
+ <source>Failed to move %L1/%Ln file(s)</source>
+ <translation>
+- <numerusform>Failed to move %L1/%Ln file</numerusform>
+- <numerusform>Failed to move %L1/%Ln files</numerusform>
++ <numerusform>Failed to Move %L1/%Ln File</numerusform>
++ <numerusform>Failed to Move %L1/%Ln Files</numerusform>
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2083"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2118"/>
+ <source>Failed to create temporary directory.</source>
+ <translation>Failed to create temporary directory.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2093"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2128"/>
+ <source>Running Import command.
+ Please wait...</source>
+ <translation>Running Import command.
+ Please wait...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2103"/>
++ <location filename="../programs/mythfrontend/gallerythumbview.cpp" line="2138"/>
+ <source>Import command failed.
+ Error: %1</source>
+ <translation>Import command failed.
+@@ -6455,117 +6351,117 @@
+ <context>
+ <name>GeneralRecPrioritiesSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2756"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2861"/>
+ <source>Avoid back to back recordings</source>
+- <translation>Avoid back to back recordings</translation>
++ <translation>Avoid Back to Back Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2760"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2865"/>
+ <source>Selects the situations where the scheduler will avoid assigning shows to the same card if their end time and start time match. This will be allowed when necessary in order to resolve conflicts.</source>
+ <translation>Selects the situations where the scheduler will avoid assigning shows to the same card if their end time and start time match. This will be allowed when necessary in order to resolve conflicts.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2767"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2872"/>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2768"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2873"/>
+ <source>Different Channels</source>
+ <translation>Different Channels</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2770"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2875"/>
+ <source>Always</source>
+ <translation>Always</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2781"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2886"/>
+ <source>Preferred input priority</source>
+- <translation>Preferred input priority</translation>
++ <translation>Preferred Input Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2783"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2888"/>
+ <source>Additional priority when a showing matches the preferred input selected in the &apos;Scheduling Options&apos; section of the recording rule.</source>
+ <translation>Additional priority when a showing matches the preferred input selected in the &apos;Scheduling Options&apos; section of the recording rule.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2798"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2903"/>
+ <source>HDTV recording priority</source>
+- <translation>HDTV recording priority</translation>
++ <translation>HDTV Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2800"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2905"/>
+ <source>Additional priority when a showing is marked as an HDTV broadcast in the TV listings.</source>
+ <translation>Additional priority when a showing is marked as an HDTV broadcast in the TV listings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2814"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2919"/>
+ <source>Widescreen recording priority</source>
+- <translation>Widescreen recording priority</translation>
++ <translation>Widescreen Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2817"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2922"/>
+ <source>Additional priority when a showing is marked as widescreen in the TV listings.</source>
+ <translation>Additional priority when a showing is marked as widescreen in the TV listings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2832"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2937"/>
+ <source>Sign language recording priority</source>
+- <translation>Sign language recording priority</translation>
++ <translation>Sign Language Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2835"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2940"/>
+ <source>Additional priority when a showing is marked as having in-vision sign language.</source>
+ <translation>Additional priority when a showing is marked as having in-vision sign language.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2851"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2956"/>
+ <source>In-vision Subtitles Recording Priority</source>
+ <translation>In-vision Subtitles Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2854"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2959"/>
+ <source>Additional priority when a showing is marked as having in-vision subtitles.</source>
+ <translation>Additional priority when a showing is marked as having in-vision subtitles.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2869"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2974"/>
+ <source>Subtitles/CC recording priority</source>
+- <translation>Subtitles/CC recording priority</translation>
++ <translation>Subtitles/CC Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2872"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2977"/>
+ <source>Additional priority when a showing is marked as having subtitles or closed captioning (CC) available.</source>
+ <translation>Additional priority when a showing is marked as having subtitles or closed captioning (CC) available.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2888"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2993"/>
+ <source>Hard of hearing priority</source>
+- <translation>Hard of hearing priority</translation>
++ <translation>Hard of Hearing Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2890"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2995"/>
+ <source>Additional priority when a showing is marked as having support for viewers with impaired hearing.</source>
+ <translation>Additional priority when a showing is marked as having support for viewers with impaired hearing.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2906"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3011"/>
+ <source>Audio described priority</source>
+- <translation>Audio described priority</translation>
++ <translation>Audio Described Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2908"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3013"/>
+ <source>Additional priority when a showing is marked as being Audio Described.</source>
+ <translation>Additional priority when a showing is marked as being Audio Described.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4175"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4435"/>
+ <source>Scheduler Options</source>
+ <translation>Scheduler Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4186"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4446"/>
+ <source>Accessibility Options</source>
+ <translation>Accessibility Options</translation>
+ </message>
+@@ -6573,270 +6469,291 @@
+ <context>
+ <name>GeneralSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="205"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="289"/>
+ <source>Commercial detection method</source>
+- <translation>Commercial detection method</translation>
++ <translation>Commercial Detection Method</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="207"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="291"/>
+ <source>This determines the method used by MythTV to detect when commercials start and end.</source>
+ <translation>This determines the method used by MythTV to detect when commercials start and end.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="223"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="307"/>
+ <source>Enable experimental speedup of commercial detection</source>
+- <translation>Enable experimental speedup of commercial detection</translation>
++ <translation>Experimental Speedup of Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="228"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="312"/>
+ <source>If enabled, experimental commercial detection speedups will be enabled.</source>
+ <translation>If enabled, experimental commercial detection speedups will be enabled.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="258"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="342"/>
+ <source>Deferral days for auto transcode jobs</source>
+- <translation>Deferral days for auto transcode jobs</translation>
++ <translation>Deferral Days for Auto Transcode Jobs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="260"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="344"/>
+ <source>If non-zero, automatic transcode jobs will be scheduled to run this many days after a recording completes instead of immediately afterwards.</source>
+ <translation>If non-zero, automatic transcode jobs will be scheduled to run this many days after a recording completes instead of immediately afterwards.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="274"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="358"/>
+ <source>Strict commercial detection</source>
+- <translation>Strict commercial detection</translation>
++ <translation>Strict Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="278"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="362"/>
+ <source>Enable stricter commercial detection code. Disable if some commercials are not being detected.</source>
+ <translation>Enable stricter commercial detection code. Disable if some commercials are not being detected.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="357"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="441"/>
+ <source>Extra disk space (GB)</source>
+- <translation>Extra disk space (GB)</translation>
++ <translation>Extra Disk Space (GB)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="359"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="443"/>
+ <source>Extra disk space (in gigabytes) beyond what MythTV requires that you want to keep free on the recording file systems.</source>
+ <translation>Extra disk space (in gigabytes) beyond what MythTV requires that you want to keep free on the recording file systems.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="389"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="473"/>
+ <source>Time to retain deleted recordings (days)</source>
+- <translation>Time to retain deleted recordings (days)</translation>
++ <translation>Time to Retain Deleted Recordings (days)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="392"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="476"/>
+ <source>Determines the maximum number of days before undeleting a recording will become impossible. A value of zero means the recording will be permanently deleted between 5 and 20 minutes later. A value of minus one means recordings will be retained until space is required. A recording will always be removed before this time if the space is needed for a new recording.</source>
+ <translation>Determines the maximum number of days before undeleting a recording will become impossible. A value of zero means the recording will be permanently deleted between 5 and 20 minutes later. A value of minus one means recordings will be retained until space is required. A recording will always be removed before this time if the space is needed for a new recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="435"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="519"/>
+ <source>Auto-Expire method</source>
+- <translation>Auto-Expire method</translation>
++ <translation>Auto-Expire Method</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="437"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="521"/>
+ <source>Oldest show first</source>
+- <translation>Oldest show first</translation>
++ <translation>Oldest Show First</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="438"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="522"/>
+ <source>Lowest priority first</source>
+- <translation>Lowest priority first</translation>
++ <translation>Lowest Priority First</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="439"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="523"/>
+ <source>Weighted time/priority combination</source>
+- <translation>Weighted time/priority combination</translation>
++ <translation>Weighted Time/Priority Combination</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="442"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="526"/>
+ <source>Method used to determine which recorded shows to delete first. Live TV recordings will always expire before normal recordings.</source>
+ <translation>Method used to determine which recorded shows to delete first. Live TV recordings will always expire before normal recordings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="455"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="539"/>
+ <source>Watched before unwatched</source>
+- <translation>Watched before unwatched</translation>
++ <translation>Watched Before Unwatched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="459"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="543"/>
+ <source>If enabled, programs that have been marked as watched will be expired before programs that have not been watched.</source>
+ <translation>If enabled, programs that have been marked as watched will be expired before programs that have not been watched.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="470"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="554"/>
+ <source>Priority weight</source>
+- <translation>Priority weight</translation>
++ <translation>Priority Weight</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="472"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="556"/>
+ <source>The number of days bonus a program gets for each priority point. This is only used when the Weighted time/priority Auto-Expire method is selected.</source>
+- <translation>The number of days bonus a program gets for each priority point. This is only used when the Weighted time/priority Auto-Expire method is selected.</translation>
++ <translation>The number of days bonus a program gets for each priority point. This is only used when the Weighted time/priority Auto-expire method is selected.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="486"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="570"/>
+ <source>Live TV max age (days)</source>
+- <translation>Live TV max age (days)</translation>
++ <translation>Live TV Max Age (days)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="488"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="572"/>
+ <source>Auto-Expire will force expiration of Live TV recordings when they are this many days old. Live TV recordings may also be expired early if necessary to free up disk space.</source>
+ <translation>Auto-Expire will force expiration of Live TV recordings when they are this many days old. Live TV recordings may also be expired early if necessary to free up disk space.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="518"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="602"/>
+ <source>Re-record watched</source>
+- <translation>Re-record watched</translation>
++ <translation>Re-record Watched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="522"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="606"/>
+ <source>If enabled, programs that have been marked as watched and are Auto-Expired will be re-recorded if they are shown again.</source>
+ <translation>If enabled, programs that have been marked as watched and are Auto-Expired will be re-recorded if they are shown again.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="533"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="617"/>
+ <source>Time to record before start of show (secs)</source>
+- <translation>Time to record before start of show (secs)</translation>
++ <translation>Time to Record Before Start of Show (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="536"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="620"/>
+ <source>This global setting allows the recorder to start before the scheduled start time. It does not affect the scheduler. It is ignored when two shows have been scheduled without enough time in between.</source>
+ <translatorcomment>Temporary fix</translatorcomment>
+ <translation>This global setting allows the recorder to start before the scheduled start time. It does not affect the scheduler. It is ignored when two shows have been scheduled without enough time in-between.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="551"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="635"/>
+ <source>Time to record past end of show (secs)</source>
+- <translation>Time to record past end of show (secs)</translation>
++ <translation>Time to Record Past End of Show (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="555"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="639"/>
+ <source>This global setting allows the recorder to record beyond the scheduled end time. It does not affect the scheduler. It is ignored when two shows have been scheduled without enough time in between.</source>
+ <translatorcomment>Temporary fix</translatorcomment>
+ <translation>This global setting allows the recorder to record beyond the scheduled end time. It does not affect the scheduler. It is ignored when two shows have been scheduled without enough time in-between.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="568"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="652"/>
+ <source>Category of shows to be extended</source>
+- <translation>Category of shows to be extended</translation>
++ <translation>Category of Shows to be Extended</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="570"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="654"/>
+ <source>For a special category (e.g. &quot;Sports event&quot;), request that shows be autoextended. Only works if a show&apos;s category can be determined.</source>
+- <translation>For a special category (e.g. &quot;Sports event&quot;), request that shows be autoextended. Only works if a show&apos;s category can be determined.</translation>
++ <translation>For a special category (e.g. &quot;Sports Event&quot;), request that shows be autoextended. Only works if a show&apos;s category can be determined.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="599"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="683"/>
+ <source>Record past end of show (mins)</source>
+- <translation>Record past end of show (mins)</translation>
++ <translation>Record Past End of Show (mins)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="603"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="687"/>
+ <source>For the specified category, an attempt will be made to extend the recording by the specified number of minutes. It is ignored when two shows have been scheduled without enough time in-between.</source>
+ <translation>For the specified category, an attempt will be made to extend the recording by the specified number of minutes. It is ignored when two shows have been scheduled without enough time in-between.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="617"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="700"/>
+ <source>Category record over-time</source>
+- <translation>Category record over-time</translation>
++ <translation>Category Record Over Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1521"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1520"/>
+ <source>Channel ordering</source>
+- <translation>Channel ordering</translation>
++ <translation>Channel Ordering</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1523"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1522"/>
+ <source>channel number</source>
+ <translation>channel number</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1524"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2642"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2661"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1523"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2721"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2740"/>
+ <source>callsign</source>
+ <translation>callsign</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2637"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2716"/>
+ <source>Channel format</source>
+- <translation>Channel format</translation>
++ <translation>Channel Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2639"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2658"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2718"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2737"/>
+ <source>number</source>
+ <translation>number</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2640"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2659"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2719"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2738"/>
+ <source>number callsign</source>
+ <translation>number callsign</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2641"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2660"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2720"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2739"/>
+ <source>number name</source>
+ <translation>number name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2643"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2662"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2722"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2741"/>
+ <source>name</source>
+ <translation>name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2645"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2724"/>
+ <source>Your preferred channel format.</source>
+ <translation>Your preferred channel format.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2656"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2735"/>
+ <source>Long channel format</source>
+- <translation>Long channel format</translation>
++ <translation>Long Channel Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2664"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2743"/>
+ <source>Your preferred long channel format.</source>
+ <translation>Your preferred long channel format.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2718"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2797"/>
+ <source>Browse/change channels from Channel Group</source>
+- <translation>Browse/change channels from Channel Group</translation>
++ <translation>Browse/Change Channels from Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2721"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2800"/>
+ <source>If enabled, Live TV will browse or change channels from the selected channel group. The &quot;All Channels&quot; channel group may be selected to browse all channels.</source>
+ <translation>If enabled, Live TV will browse or change channels from the selected channel group. The &quot;All Channels&quot; channel group may be selected to browse all channels.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4090"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2814"/>
++ <source>Case-sensitive sorting</source>
++ <translation>Case-sensitive Sorting</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2816"/>
++ <source>If enabled, all sorting will be case-sensitive. This would mean that &quot;bee movie&quot; would sort after &quot;Sea World&quot; as lower case letters sort after uppercase letters.</source>
++ <translation>If enabled, all sorting will be case-sensitive. For example, &quot;bee movie&quot; would sort after &quot;Sea World&quot; as lower case letters sort after uppercase letters.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2829"/>
++ <source>Remove prefixes when sorting</source>
++ <translation>Remove Prefixes when Sorting</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2831"/>
++ <source>If enabled, all sorting will remove the common prefixes (The, A, An) from a string prior to sorting. For example, this would sort the titles &quot;Earth 2&quot;, &quot;The Flash&quot;, and &quot;Kings&quot; in that order. If disabled, they would sort as &quot;Earth 2&quot;, &quot;Kings&quot;, &quot;The Flash&quot;.</source>
++ <translation>If enabled, all sorting will remove the common prefixes (The, A, An) from a string prior to sorting. For example, this would sort the titles &quot;Earth 2&quot;, &quot;The Flash&quot;, and &quot;Kings&quot; in that order. If disabled, they would sort as &quot;Earth 2&quot;, &quot;Kings&quot;, &quot;The Flash&quot;.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4365"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4367"/>
+ <source>General (Basic)</source>
+ <translation>General (Basic)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4099"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4376"/>
+ <source>General (Auto-Expire)</source>
+ <translation>General (Auto-Expire)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4130"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4394"/>
+ <source>General (Jobs)</source>
+ <translation>General (Jobs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4141"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4405"/>
+ <source>General (Advanced)</source>
+ <translation>General (Advanced)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4150"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4414"/>
+ <source>General (Channel Groups)</source>
+ <translation>General (Channel Groups)</translation>
+ </message>
+@@ -6844,82 +6761,82 @@
+ <context>
+ <name>GeneralSetupWizard</name>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="57"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="54"/>
+ <source>Anonymously submit a profile of your hardware. This helps the developers to determine where to focus their efforts.</source>
+ <translation>Anonymously submit a profile of your hardware. This helps the developers to determine where to focus their efforts.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="60"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="57"/>
+ <source>Visit your online hardware profile. (This requires that you have the MythBrowser plugin installed)</source>
+ <translation>Visit your online hardware profile. (This requires that you have the MythBrowser plugin installed)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="62"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="59"/>
+ <source>Delete your online hardware profile.</source>
+ <translation>Delete your online hardware profile.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="64"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="61"/>
+ <source>Save these changes and move on to the next configuration step.</source>
+ <translation>Save these changes and move on to the next configuration step.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="66"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="63"/>
+ <source>Exit this wizard, save no changes.</source>
+- <translation>Exit this wizard, save no changes.</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="133"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="126"/>
+ <source>Would you like to share your hardware profile with the MythTV developers? Profiles are anonymous and are a great way to help with future development.</source>
+ <translation>Would you like to share your hardware profile with the MythTV developers? Profiles are anonymous and are a great way to help with future development.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="151"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="144"/>
+ <source>Submitting your hardware profile...</source>
+- <translation>Submitting your hardware profile...</translation>
++ <translation>Submitting Your Hardware Profile...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="159"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="152"/>
+ <source>Hardware profile submitted. Thank you for supporting MythTV!</source>
+ <translation>Hardware profile submitted. Thank you for supporting MythTV!</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="173"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="166"/>
+ <source>Encountered a problem while submitting your profile.</source>
+ <translation>Encountered a problem while submitting your profile.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="182"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="175"/>
+ <source>You haven&apos;t submitted your hardware profile yet! Please submit your profile to visit it online.</source>
+ <translation>You haven&apos;t submitted your hardware profile yet! Please submit your profile to visit it online.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="199"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="192"/>
+ <source>No browser command set! MythTV needs a browser installed and configure to display your hardware profile.</source>
+ <translation>No browser command set! MythTV needs a browser installed and configure to display your hardware profile.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="230"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="223"/>
+ <source>You haven&apos;t submitted your hardware profile yet!</source>
+ <translation>You haven&apos;t submitted your hardware profile yet!</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="234"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="227"/>
+ <source>Are you sure you want to delete your online profile? Your information is anonymous and helps the developers to know what hardware the majority of users prefer.</source>
+ <translation>Are you sure you want to delete your online profile? Your information is anonymous and helps the developers to know what hardware the majority of users prefer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="253"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="246"/>
+ <source>Deleting your hardware profile...</source>
+- <translation>Deleting your hardware profile...</translation>
++ <translation>Deleting Your Hardware Profile...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="261"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="254"/>
+ <source>Hardware profile deleted.</source>
+ <translation>Hardware profile deleted.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="274"/>
++ <location filename="../programs/mythfrontend/setupwizard_general.cpp" line="267"/>
+ <source>Encountered a problem while deleting your profile.</source>
+ <translation>Encountered a problem while deleting your profile.</translation>
+ </message>
+@@ -6927,191 +6844,191 @@
+ <context>
+ <name>GrabberSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="56"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="53"/>
+ <source>Select a source to use when searching for information and artwork about movies.</source>
+ <translation>Select a source to use when searching for information and artwork about movies.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="58"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="55"/>
+ <source>Select a source to use when searching for information and artwork about television.</source>
+ <translation>Select a source to use when searching for information and artwork about television.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="60"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="57"/>
+ <source>Select a source to use when searching for information and artwork about video games.</source>
+ <translation>Select a source to use when searching for information and artwork about video games.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="62"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="59"/>
+ <source>Save your changes and close this window.</source>
+- <translation>Save your changes and close this window.</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="63"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="60"/>
+ <source>Discard your changes and close this window.</source>
+- <translation>Discard your changes and close this window.</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="65"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="62"/>
+ <source>If set, the backend will attempt to perform artwork updates for recordings daily. When new seasons begin to record, this will attempt to provide you with fresh, relevant artwork while preserving the artwork assigned to old recordings.</source>
+ <translation>If set, the backend will attempt to perform artwork updates for recordings daily. When new seasons begin to record, this will attempt to provide you with fresh, relevant artwork while preserving the artwork assigned to old recordings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/grabbersettings.cpp" line="76"/>
++ <location filename="../programs/mythfrontend/grabbersettings.cpp" line="73"/>
+ <source>Searching for data sources...</source>
+- <translation>Searching for data sources...</translation>
++ <translation>Searching for Data Sources...</translation>
+ </message>
+ </context>
+ <context>
+ <name>GuideGrid</name>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="441"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="437"/>
+ <source>You don&apos;t have any channels defined in the database.
+ The program guide will have nothing to show you.</source>
+ <translation>You don&apos;t have any channels defined in the database.
+ The program guide will have nothing to show you.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="446"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="442"/>
+ <source>Channel group &apos;%1&apos; doesn&apos;t have any channels defined.
+ The program guide will have nothing to show you.</source>
+ <translation>Channel group &apos;%1&apos; doesn&apos;t have any channels defined.
+ The program guide will have nothing to show you.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1091"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1090"/>
+ <source>Guide Options</source>
+ <translation>Guide Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1102"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1924"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1101"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1938"/>
+ <source>Change to Channel</source>
+ <translation>Change to Channel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1104"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1928"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1103"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1926"/>
+ <source>Watch This Channel</source>
+ <translation>Watch This Channel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1106"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1920"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1105"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1934"/>
+ <source>Record This</source>
+ <translation>Record This</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1108"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1138"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1961"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1107"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1137"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1969"/>
+ <source>Recording Options</source>
+ <translation>Recording Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1112"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1965"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1111"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1973"/>
+ <source>Jump to Time</source>
+ <translation>Jump to Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1116"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1944"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1115"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1952"/>
+ <source>Channel Search</source>
+ <translation>Channel Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1151"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1972"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1150"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1980"/>
+ <source>Edit Recording Status</source>
+ <translation>Edit Recording Status</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1152"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1976"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1151"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1984"/>
+ <source>Edit Schedule</source>
+ <translation>Edit Schedule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1154"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1984"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1153"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1992"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1696"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1863"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2235"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2236"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1702"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1869"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2240"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2241"/>
+ <source>Unknown</source>
+ <comment>Unknown program title</comment>
+ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2730"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2735"/>
+ <source>Jump to a specific date and time in the guide</source>
+- <translation>Jump to a specific date and time in the guide</translation>
++ <translation>Jump to a Specific Date and Time in the Guide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1110"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1934"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1109"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1942"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1153"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1980"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1152"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1988"/>
+ <source>Show Upcoming</source>
+ <translation>Show Upcoming</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1155"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1988"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1154"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1996"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1158"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1992"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1157"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2000"/>
+ <source>Delete Rule</source>
+ <translation>Delete Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1114"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1938"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1113"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1946"/>
+ <source>Reverse Channel Order</source>
+ <translation>Reverse Channel Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1123"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1948"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1122"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1956"/>
+ <source>Add To Channel Group</source>
+- <translation>Add To Channel Group</translation>
++ <translation>Add to Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1125"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1953"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1124"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1961"/>
+ <source>Remove from Channel Group</source>
+ <translation>Remove from Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1120"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="1957"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1119"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="1965"/>
+ <source>Choose Channel Group</source>
+ <translation>Choose Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2289"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2294"/>
+ <source>You don&apos;t have any channel groups defined</source>
+ <translation>You don&apos;t have any channel groups defined</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2303"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2308"/>
+ <source>Select Channel Group</source>
+ <translation>Select Channel Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2588"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2593"/>
+ <source>Delete &apos;%1&apos; %2 rule?</source>
+ <translation>Delete &apos;%1&apos; %2 rule?</translation>
+ </message>
+@@ -7119,158 +7036,130 @@
+ <context>
+ <name>HDHomeRunConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2067"/>
+- <source>Description</source>
+- <translation>Description</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2082"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1465"/>
+ <source>Recording Options</source>
+ <translation>Recording Options</translation>
+ </message>
+ </context>
+ <context>
+- <name>HDHomeRunDeviceID</name>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1415"/>
+- <source>Device ID</source>
+- <translation>Device ID</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1416"/>
+- <source>Device ID of HDHomeRun device</source>
+- <translation>Device ID of HDHomeRun device</translation>
+- </message>
+-</context>
+-<context>
+- <name>HDHomeRunDeviceIDList</name>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1509"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1565"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1575"/>
+- <source>Manually Enter IP Address</source>
+- <translation>Manually Enter IP Address</translation>
+- </message>
+-</context>
+-<context>
+ <name>HDPVRConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2662"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2370"/>
+ <source>Probed info</source>
+- <translation>Probed info</translation>
++ <translation>Probed Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2679"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2388"/>
+ <source>Failed to open</source>
+- <translation>Failed to open</translation>
++ <translation>Failed to Open</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2685"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2394"/>
+ <source>Failed to probe</source>
+- <translation>Failed to probe</translation>
++ <translation>Failed to Probe</translation>
+ </message>
+ </context>
+ <context>
+ <name>HelpPopup</name>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5516"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5560"/>
+ <source>Commercials are flagged</source>
+- <translation>Commercials are flagged</translation>
++ <translation>Commercials are Flagged</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5517"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5561"/>
+ <source>An editing cutlist is present</source>
+- <translation>An editing cutlist is present</translation>
++ <translation>Editing Cutlist is Present</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5518"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5562"/>
+ <source>The program is able to auto-expire</source>
+- <translation>The program is able to auto-expire</translation>
++ <translation>Program is Set to Auto-expire</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5519"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5563"/>
+ <source>Commercials are being flagged</source>
+- <translation>Commercials are being flagged</translation>
++ <translation>Commercials are Being Flagged</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5520"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5564"/>
+ <source>A bookmark is set</source>
+- <translation>A bookmark is set</translation>
++ <translation>Bookmark is Set</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5522"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5566"/>
+ <source>Recording is in use</source>
+- <translation>Recording is in use</translation>
++ <translation>Recording is In Use</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5523"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5567"/>
+ <source>Recording has been transcoded</source>
+- <translation>Recording has been transcoded</translation>
++ <translation>Recording has been Transcoded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5526"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5570"/>
+ <source>Recording is in Mono</source>
+ <translation>Recording is in Mono</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5527"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5571"/>
+ <source>Recording is in Stereo</source>
+ <translation>Recording is in Stereo</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5528"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5572"/>
+ <source>Recording is in Surround Sound</source>
+ <translation>Recording is in Surround Sound</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5529"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5573"/>
+ <source>Recording is in Dolby Surround Sound</source>
+ <translation>Recording is in Dolby Surround Sound</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5531"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5575"/>
+ <source>Recording is Closed Captioned</source>
+ <translation>Recording is Closed Captioned</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5532"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5576"/>
+ <source>Recording has Subtitles Available</source>
+ <translation>Recording has Subtitles Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5533"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5577"/>
+ <source>Recording is Subtitled</source>
+ <translation>Recording is Subtitled</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5535"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5579"/>
+ <source>Recording is in 1080i/p High Definition</source>
+ <translation>Recording is in 1080i/p High Definition</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5536"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5580"/>
+ <source>Recording is in 720p High Definition</source>
+ <translation>Recording is in 720p High Definition</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5537"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5581"/>
+ <source>Recording is in High Definition</source>
+ <translation>Recording is in High Definition</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5538"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5582"/>
+ <source>Recording is Widescreen</source>
+ <translation>Recording is Widescreen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5539"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5583"/>
+ <source>Recording is in HD using H.264 codec</source>
+- <translation>Recording is in HD using H.264 codec</translation>
++ <translation>Recording is in HD Using H.264 Codec</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5541"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5585"/>
+ <source>Recording has been watched</source>
+- <translation>Recording has been watched</translation>
++ <translation>Recording has been Watched</translation>
+ </message>
+ </context>
+ <context>
+@@ -7296,7 +7185,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="24"/>
+ <source>Package installed</source>
+- <translation>Package installed</translation>
++ <translation>Package Installed</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="25"/>
+@@ -7747,7 +7636,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="163"/>
+ <source>Use Link-Local</source>
+- <translation>Use Link-Local</translation>
++ <translation>Use Link-local</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="165"/>
+@@ -8060,7 +7949,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="240"/>
+ <source>Auto-Expire</source>
+- <translation>Auto-Expire</translation>
++ <translation>Auto-expire</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="241"/>
+@@ -8080,7 +7969,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="245"/>
+ <source>Delete and Re-Record</source>
+- <translation>Delete and Re-Record</translation>
++ <translation>Delete and Re-record</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="246"/>
+@@ -8165,7 +8054,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="272"/>
+ <source>Allow Auto-Expire</source>
+- <translation>Allow Auto-Expire</translation>
++ <translation>Allow Auto-expire</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="275"/>
+@@ -8449,7 +8338,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="12"/>
+ <source>Loading ...</source>
+- <translation>Loading ...</translation>
++ <translation>Loading...</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="14"/>
+@@ -8661,13 +8550,13 @@
+ <message>
+ <location filename="../libs/libmythtv/channelscan/iptvchannelfetcher.cpp" line="335"/>
+ <source>Encountered malformed channel</source>
+- <translation>Encountered malformed channel</translation>
++ <translation>Encountered Malformed Channel</translation>
+ </message>
+ </context>
+ <context>
+ <name>IdleScreen</name>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/idlescreen.cpp" line="138"/>
++ <location filename="../programs/mythfrontend/idlescreen.cpp" line="135"/>
+ <source>Backend will shutdown in %n second(s).</source>
+ <translation>
+ <numerusform>Backend will shutdown in %n second.</numerusform>
+@@ -8678,12 +8567,12 @@
+ <context>
+ <name>ImageManagerFe</name>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemanager.cpp" line="2362"/>
++ <location filename="../libs/libmythmetadata/imagemanager.cpp" line="2370"/>
+ <source>Gallery</source>
+ <translation>Gallery</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemanager.cpp" line="2364"/>
++ <location filename="../libs/libmythmetadata/imagemanager.cpp" line="2372"/>
+ <source>Photographs</source>
+ <translation>Photographs</translation>
+ </message>
+@@ -8691,111 +8580,111 @@
+ <context>
+ <name>ImportConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1980"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1925"/>
+ <source>A local file used to simulate a recording. Leave empty to use MythEvents to trigger an external program to import recording files.</source>
+ <translation>A local file used to simulate a recording. Leave empty to use MythEvents to trigger an external program to import recording files.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1988"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1933"/>
+ <source>File info</source>
+- <translation>File info</translation>
++ <translation>File Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1991"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1937"/>
+ <source>File size</source>
+- <translation>File size</translation>
++ <translation>File Size</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2014"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1961"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2017"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1964"/>
+ <source>File not readable</source>
+- <translation>File not readable</translation>
++ <translation>File Not Readable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2021"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1968"/>
+ <source>File %1 does not exist</source>
+- <translation>File %1 does not exist</translation>
++ <translation>File %1 Does Not Exist</translation>
+ </message>
+ </context>
+ <context>
+ <name>ImportIconsWizard</name>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="94"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="90"/>
+ <source>Name of the icon file</source>
+- <translation>Name of the icon file</translation>
++ <translation>Name of the Icon File</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="95"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="91"/>
+ <source>List of possible icon files</source>
+- <translation>List of possible icon files</translation>
++ <translation>List of Possible Icon Files</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="96"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="92"/>
+ <source>Enter text here for the manual search</source>
+- <translation>Enter text here for the manual search</translation>
++ <translation>Enter search text:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="97"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="93"/>
+ <source>Manually search for the text</source>
+- <translation>Manually search for the text</translation>
++ <translation>Manually Search for the Text</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="98"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="94"/>
+ <source>Skip this icon</source>
+- <translation>Skip this icon</translation>
++ <translation>Skip This Icon</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="139"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="135"/>
+ <source>Finish</source>
+ <translation>Finish</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="141"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="137"/>
+ <source>Skip</source>
+ <translation>Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="173"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="169"/>
+ <source>No matches found for &quot;%1&quot;</source>
+- <translation>No matches found for &quot;%1&quot;</translation>
++ <translation>No Matches Found for &quot;%1&quot;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="411"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="407"/>
+ <source>Downloading %1 of %2</source>
+ <extracomment>%1 is the current channel position, * %2 is the total number of channels,</extracomment>
+ <translation>Downloading %1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="483"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="479"/>
+ <source>No matches found for %1</source>
+- <translation>No matches found for %1</translation>
++ <translation>No Matches Found for %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="218"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="214"/>
+ <source>Icon for %1 was downloaded successfully.</source>
+ <translation>Icon for %1 was downloaded successfully.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="223"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="219"/>
+ <source>Failed to download the icon for %1.</source>
+ <translation>Failed to download the icon for %1.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="319"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="315"/>
+ <source>Initializing, please wait...</source>
+- <translation>Initializing, please wait...</translation>
++ <translation>Initializing, Please Wait...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="393"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="389"/>
+ <source>Downloading, please wait...</source>
+- <translation>Downloading, please wait...</translation>
++ <translation>Downloading, Please Wait...</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="423"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="419"/>
+ <source>Could not find %n icon(s).</source>
+ <translation>
+ <numerusform>Could not find %n icon.</numerusform>
+@@ -8803,47 +8692,27 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="479"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="475"/>
+ <source>Choose icon for channel %1</source>
+- <translation>Choose icon for channel %1</translation>
++ <translation>Choose Icon for Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="762"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="786"/>
+ <source>You now have the opportunity to transmit your choices back to mythtv.org so that others can benefit from your selections.</source>
+ <translation>You now have the opportunity to transmit your choices back to mythtv.org so that others can benefit from your selections.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="785"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="809"/>
+ <source>Failed to submit icon choices.</source>
+ <translation>Failed to submit icon choices.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="820"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="844"/>
+ <source>Icon choices submitted successfully.</source>
+ <translation>Icon choices submitted successfully.</translation>
+ </message>
+ </context>
+ <context>
+- <name>ImportSettings</name>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="122"/>
+- <source>Import</source>
+- <translation>Import</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="126"/>
+- <source>Import Command</source>
+- <translation>Import Command</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="127"/>
+- <source>Command/script that can be run from the menu.
+-%TMPDIR% will be replaced by a new temporary directory, which the import dialog will show automatically. The directory will be removed when Gallery exits.</source>
+- <translation>Command/script that can be run from the menu.
+-%TMPDIR% will be replaced by a new temporary directory, which the import dialog will show automatically. The directory will be removed when Gallery exits.</translation>
+- </message>
+-</context>
+-<context>
+ <name>InfoList</name>
+ <message numerus="yes">
+ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="161"/>
+@@ -8877,7 +8746,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="168"/>
+ <source>Dir size</source>
+- <translation>Dir size</translation>
++ <translation>Dir Size</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="176"/>
+@@ -8913,20 +8782,20 @@
+ <message>
+ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="243"/>
+ <source>Last scan</source>
+- <translation>Last scan</translation>
++ <translation>Last Scan</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryinfo.cpp" line="251"/>
++ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="255"/>
+ <source>Modified</source>
+ <translation>Modified</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryinfo.cpp" line="257"/>
++ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="265"/>
+ <source>File size</source>
+- <translation>File size</translation>
++ <translation>File Size</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryinfo.cpp" line="258"/>
++ <location filename="../programs/mythfrontend/galleryinfo.cpp" line="266"/>
+ <source>Orientation</source>
+ <translation>Orientation</translation>
+ </message>
+@@ -8934,7 +8803,7 @@
+ <context>
+ <name>InputSelector</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/inputselectorsetting.cpp" line="41"/>
++ <location filename="../libs/libmythtv/channelscan/inputselectorsetting.cpp" line="40"/>
+ <source>Input</source>
+ <translation>Input</translation>
+ </message>
+@@ -8942,155 +8811,155 @@
+ <context>
+ <name>JobQueue</name>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1109"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1145"/>
+ <source>Transcode</source>
+ <translation>Transcode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1110"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1146"/>
+ <source>Flag Commercials</source>
+ <translation>Flag Commercials</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1111"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1147"/>
+ <source>Look up Metadata</source>
+- <translation>Look up Metadata</translation>
++ <translation>Look Up Metadata</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1121"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1157"/>
+ <source>Unknown Job</source>
+ <translation>Unknown Job</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1132"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1168"/>
+ <source>Undefined</source>
+ <translation>Undefined</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1678"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1740"/>
+ <source>Unable to retrieve program info from database</source>
+- <translation>Unable to retrieve program info from database</translation>
++ <translation>Unable to Retrieve Program Info from Database</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1708"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1770"/>
+ <source>Program has been deleted</source>
+- <translation>Program has been deleted</translation>
++ <translation>Program has been Deleted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="1733"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="1795"/>
+ <source>UNKNOWN JobType, unable to process!</source>
+ <translation>UNKNOWN JobType, unable to process!</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2004"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2065"/>
+ <source>ERROR: Unable to find mythtranscode, check backend logs.</source>
+ <translation>ERROR: Unable to find mythtranscode, check backend logs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2028"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2089"/>
+ <source>Finished.</source>
+- <translation>Finished.</translation>
++ <translation>Finished</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2040"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2101"/>
+ <source>%1: %2 =&gt; %3</source>
+ <extracomment>%1 is transcoder name, %2 is the original file size and %3 is the current file size</extracomment>
+ <translation>%1: %2 =&gt; %3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2074"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2135"/>
+ <source>exit status %1, job status was &quot;%2&quot;</source>
+ <translation>exit status %1, job status was &quot;%2&quot;</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2096"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2157"/>
+ <source>Retry limit exceeded</source>
+- <translation>Retry limit exceeded</translation>
++ <translation>Retry Limit Exceeded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2148"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2209"/>
+ <source>Could not open new database connection for metadata lookup.</source>
+- <translation>Could not open new database connection for metadata lookup.</translation>
++ <translation>Could Not Open New Database Connection for Metadata Lookup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2155"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2216"/>
+ <source>Metadata Lookup Starting</source>
+ <translation>Metadata Lookup Starting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2181"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2242"/>
+ <source>Unable to find mythmetadatalookup</source>
+- <translation>Unable to find mythmetadatalookup</translation>
++ <translation>Unable to Find mythmetadatalookup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2205"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2266"/>
+ <source>Metadata Lookup Complete.</source>
+- <translation>Metadata Lookup Complete.</translation>
++ <translation>Metadata Lookup Complete</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2211"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2272"/>
+ <source>Metadata Lookup %1</source>
+ <comment>Job ID</comment>
+ <translation>Metadata Lookup %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2273"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2334"/>
+ <source>Could not open new database connection for commercial detector.</source>
+- <translation>Could not open new database connection for commercial detector.</translation>
++ <translation>Could Not Open New Database Connection for Commercial Detector</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2280"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2341"/>
+ <source>Commercial Detection Starting</source>
+ <translation>Commercial Detection Starting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2318"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2379"/>
+ <source>Unable to find mythcommflag</source>
+- <translation>Unable to find mythcommflag</translation>
++ <translation>Unable to Find mythcommflag</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2440"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2501"/>
+ <source>ERROR: Unable to find executable, check backend logs.</source>
+ <translation>ERROR: Unable to find executable, check backend logs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2448"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2509"/>
+ <source>ERROR: User Job returned non-zero, check logs.</source>
+ <translation>ERROR: User Job returned non-zero, check logs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2464"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2525"/>
+ <source>Successfully Completed.</source>
+- <translation>Successfully Completed.</translation>
++ <translation>Successfully Completed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2187"/>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2324"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2248"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2385"/>
+ <source>Aborted by user</source>
+- <translation>Aborted by user</translation>
++ <translation>Aborted by User</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2193"/>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2330"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2254"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2391"/>
+ <source>Unable to open file or init decoder</source>
+- <translation>Unable to open file or init decoder</translation>
++ <translation>Unable to Open File or Initialize Decoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2199"/>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2336"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2260"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2397"/>
+ <source>Failed with exit status %1</source>
+- <translation>Failed with exit status %1</translation>
++ <translation>Failed with Exit Status %1</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2342"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2403"/>
+ <source>%n commercial break(s)</source>
+ <translation>
+- <numerusform>%n commercial break</numerusform>
+- <numerusform>%n commercial breaks</numerusform>
++ <numerusform>%n Commercial Break</numerusform>
++ <numerusform>%n Commercial Breaks</numerusform>
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/jobqueue.cpp" line="2358"/>
++ <location filename="../libs/libmythtv/jobqueue.cpp" line="2419"/>
+ <source>Commercial Detection %1</source>
+ <comment>Job ID</comment>
+ <translation>Commercial Detection %1</translation>
+@@ -9174,50 +9043,50 @@
+ <context>
+ <name>KeyGrabPopupBox</name>
+ <message>
+- <location filename="../programs/mythfrontend/keygrabber.cpp" line="48"/>
++ <location filename="../programs/mythfrontend/keygrabber.cpp" line="41"/>
+ <source>Press A Key</source>
+ <translation>Press A Key</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/keygrabber.cpp" line="49"/>
++ <location filename="../programs/mythfrontend/keygrabber.cpp" line="42"/>
+ <source>Waiting for key press</source>
+- <translation>Waiting for key press</translation>
++ <translation>Waiting for Key Press</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/keygrabber.cpp" line="113"/>
++ <location filename="../programs/mythfrontend/keygrabber.cpp" line="108"/>
+ <source>Pressed key not recognized</source>
+- <translation>Pressed key not recognized</translation>
++ <translation>Pressed Key Not Recognized</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/keygrabber.cpp" line="119"/>
++ <location filename="../programs/mythfrontend/keygrabber.cpp" line="114"/>
+ <source>Add key &apos;%1&apos;?</source>
+- <translation>Add key &apos;%1&apos;?</translation>
++ <translation>Add Key &apos;%1&apos;?</translation>
+ </message>
+ </context>
+ <context>
+ <name>LCDProcClient</name>
+ <message>
+- <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="1933"/>
++ <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="1929"/>
+ <source>RECORDING</source>
+ <translation>RECORDING</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2026"/>
++ <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2022"/>
+ <source>R </source>
+ <translation>R </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2031"/>
++ <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2027"/>
+ <source>E </source>
+ <translation>E </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2038"/>
++ <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2034"/>
+ <source>C </source>
+ <translation>C </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2064"/>
++ <location filename="../programs/mythlcdserver/lcdprocclient.cpp" line="2060"/>
+ <source>RECORDING|</source>
+ <translation>RECORDING|</translation>
+ </message>
+@@ -9227,171 +9096,166 @@
+ <message>
+ <location filename="../libs/libmyth/langsettings.cpp" line="76"/>
+ <source>Preferred language</source>
+- <translation>Preferred language</translation>
++ <translation>Preferred Language</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/langsettings.cpp" line="77"/>
+ <source>Your location</source>
+- <translation>Your location</translation>
++ <translation>Your Location</translation>
+ </message>
+ </context>
+ <context>
+ <name>LcdSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3335"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3502"/>
+ <source>Display time</source>
+- <translation>Display time</translation>
++ <translation>Display Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3337"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3504"/>
+ <source>Display current time on idle LCD display.</source>
+ <translation>Display current time on idle LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3349"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3516"/>
+ <source>Display recording status</source>
+- <translation>Display recording status</translation>
++ <translation>Display Recording Status</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3351"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3518"/>
+ <source>Display current recordings information on LCD display.</source>
+ <translation>Display current recordings information on LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3363"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3530"/>
+ <source>Display menus</source>
+- <translation>Display menus</translation>
++ <translation>Display Menus</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3365"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3532"/>
+ <source>Display selected menu on LCD display. </source>
+ <translation>Display selected menu on LCD display. </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3376"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3543"/>
+ <source>Menu pop-up time</source>
+- <translation>Menu pop-up time</translation>
++ <translation>Menu Pop-up Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3378"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3545"/>
+ <source>How many seconds the menu will remain visible after navigation.</source>
+ <translation>How many seconds the menu will remain visible after navigation.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3390"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3557"/>
+ <source>Display music artist and title</source>
+ <translation>Display music artist and title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3392"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3559"/>
+ <source>Display playing artist and song title in MythMusic on LCD display.</source>
+ <translation>Display playing artist and song title in MythMusic on LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3404"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3571"/>
+ <source>Items</source>
+ <translation>Items</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3406"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3573"/>
+ <source>Artist - Title</source>
+ <translation>Artist - Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3407"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3574"/>
+ <source>Artist [Album] Title</source>
+ <translation>Artist [Album] Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3410"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3577"/>
+ <source>Which items to show when playing music.</source>
+ <translation>Which items to show when playing music.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3419"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3586"/>
+ <source>Display channel information</source>
+- <translation>Display channel information</translation>
++ <translation>Display Channel Information</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3421"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3588"/>
+ <source>Display tuned channel information on LCD display.</source>
+ <translation>Display tuned channel information on LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3433"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3600"/>
+ <source>Display volume information</source>
+- <translation>Display volume information</translation>
++ <translation>Display Volume Information</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3435"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3602"/>
+ <source>Display volume level information on LCD display.</source>
+ <translation>Display volume level information on LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3447"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3614"/>
+ <source>Display generic information</source>
+- <translation>Display generic information</translation>
++ <translation>Display Generic Information</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3449"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3616"/>
+ <source>Display generic information on LCD display.</source>
+ <translation>Display generic information on LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3460"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3627"/>
+ <source>Backlight always on</source>
+- <translation>Backlight always on</translation>
++ <translation>Backlight Always On</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3462"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3629"/>
+ <source>Turn on the backlight permanently on the LCD display.</source>
+ <translation>Turn on the backlight permanently on the LCD display.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3473"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3640"/>
+ <source>Heartbeat always on</source>
+- <translation>Heartbeat always on</translation>
++ <translation>Heartbeat Always On</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3475"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3642"/>
+ <source>Turn on the LCD heartbeat.</source>
+ <translation>Turn on the LCD heartbeat.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3486"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3653"/>
+ <source>Display large clock</source>
+- <translation>Display large clock</translation>
++ <translation>Display Large Clock</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3488"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3655"/>
+ <source>On multiline displays try and display the time as large as possible.</source>
+ <translation>On multiline displays try and display the time as large as possible.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3500"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3667"/>
+ <source>LCD key order</source>
+- <translation>LCD key order</translation>
++ <translation>LCD Key Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3505"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3672"/>
+ <source>Enter the 6 Keypad Return Codes for your LCD keypad in the order in which you want the functions up/down/left/right/yes/no to operate. (See lcdproc/server/drivers/hd44780.c/keyMapMatrix[] or the matrix for your display)</source>
+ <translation>Enter the 6 Keypad Return Codes for your LCD keypad in the order in which you want the functions up/down/left/right/yes/no to operate. (See lcdproc/server/drivers/hd44780.c/keyMapMatrix[] or the matrix for your display)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3517"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3684"/>
+ <source>Enable LCD device</source>
+- <translation>Enable LCD device</translation>
++ <translation>Enable LCD Device</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3519"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3686"/>
+ <source>Use an LCD display to view MythTV status information.</source>
+ <translation>Use an LCD display to view MythTV status information.</translation>
+ </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3532"/>
+- <source>LCD device display</source>
+- <translation>LCD device display</translation>
+- </message>
+ </context>
+ <context>
+ <name>LyricsData</name>
+@@ -9405,47 +9269,46 @@
+ <location filename="../libs/libmythmetadata/lyricsdata.cpp" line="95"/>
+ <location filename="../libs/libmythmetadata/lyricsdata.cpp" line="230"/>
+ <source>No lyrics found for this track</source>
+- <translation>No lyrics found for this track</translation>
++ <translation>No Lyrics Found for This Track</translation>
+ </message>
+ </context>
+ <context>
+ <name>MPEGConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2513"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2219"/>
+ <source>Probed info</source>
+- <translation>Probed info</translation>
++ <translation>Probed Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2528"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2235"/>
+ <source>Failed to open</source>
+- <translation>Failed to open</translation>
++ <translation>Failed to Open</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2535"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2242"/>
+ <source>Failed to probe</source>
+- <translation>Failed to probe</translation>
++ <translation>Failed to Probe</translation>
+ </message>
+ </context>
+ <context>
+ <name>MacDesktopSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3799"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3830"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3883"/>
+ <source>Video on the desktop</source>
+- <translation>Video on the desktop</translation>
++ <translation>Video on the Desktop</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3803"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3887"/>
+ <source>If enabled, video will be displayed on the desktop, behind the Finder icons. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</source>
+ <translation>If enabled, video will be displayed on the desktop, behind the Finder icons. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3817"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3901"/>
+ <source>Frames to skip</source>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3821"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3905"/>
+ <source>Video on the desktop will skip this many frames for each frame drawn. Set to 0 to show every frame.</source>
+ <translation>Video on the desktop will skip this many frames for each frame drawn. Set to 0 to show every frame.</translation>
+ </message>
+@@ -9453,23 +9316,22 @@
+ <context>
+ <name>MacDockSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3755"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3783"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3853"/>
+ <source>Video in the dock</source>
+- <translation>Video in the dock</translation>
++ <translation>Video in the Dock</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3759"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3857"/>
+ <source>If enabled, video will be displayed in the application&apos;s dock icon. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</source>
+ <translation>If enabled, video will be displayed in the application&apos;s dock icon. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3771"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3869"/>
+ <source>Frames to skip</source>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3775"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3873"/>
+ <source>Video in the dock icon will skip this many frames for each frame drawn. Set to 0 to show every frame.</source>
+ <translation>Video in the dock icon will skip this many frames for each frame drawn. Set to 0 to show every frame.</translation>
+ </message>
+@@ -9477,33 +9339,32 @@
+ <context>
+ <name>MacFloatSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3690"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3734"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3807"/>
+ <source>Video in floating window</source>
+- <translation>Video in floating window</translation>
++ <translation>Video in Floating Window</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3694"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3811"/>
+ <source>If enabled, video will be displayed in a floating window. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</source>
+ <translation>If enabled, video will be displayed in a floating window. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3706"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3823"/>
+ <source>Frames to skip</source>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3710"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3827"/>
+ <source>Video in the floating window will skip this many frames for each frame drawn. Set to 0 to show every frame.</source>
+ <translation>Video in the floating window will skip this many frames for each frame drawn. Set to 0 to show every frame.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3721"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3838"/>
+ <source>Opacity</source>
+ <translation>Opacity</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3725"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3842"/>
+ <source>The opacity of the floating window. Set to 100 for completely opaque, set to 0 for completely transparent.</source>
+ <translation>The opacity of the floating window. Set to 100 for completely opaque, set to 0 for completely transparent.</translation>
+ </message>
+@@ -9511,33 +9372,32 @@
+ <context>
+ <name>MacMainSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3625"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3670"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3760"/>
+ <source>Video in main window</source>
+- <translation>Video in main window</translation>
++ <translation>Video in Main Window</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3629"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3764"/>
+ <source>If enabled, video will be displayed in the main GUI window. Disable this when you only want video on the desktop or in a floating window. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</source>
+ <translation>If enabled, video will be displayed in the main GUI window. Disable this when you only want video on the desktop or in a floating window. Only valid when &quot;Use GUI size for TV playback&quot; and &quot;Run the frontend in a window&quot; are checked.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3643"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3778"/>
+ <source>Frames to skip</source>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3647"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3782"/>
+ <source>Video in the main window will skip this many frames for each frame drawn. Set to 0 to show every frame.</source>
+ <translation>Video in the main window will skip this many frames for each frame drawn. Set to 0 to show every frame.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3658"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3793"/>
+ <source>Opacity</source>
+ <translation>Opacity</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3662"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3797"/>
+ <source>The opacity of the main window. Set to 100 for completely opaque, set to 0 for completely transparent.</source>
+ <translation>The opacity of the main window. Set to 100 for completely opaque, set to 0 for completely transparent.</translation>
+ </message>
+@@ -9545,252 +9405,327 @@
+ <context>
+ <name>MainGeneralSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1834"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1850"/>
+ <source>Use line edit virtual keyboards</source>
+- <translation>Use line edit virtual keyboards</translation>
++ <translation>Use Line Edit Virtual Keyboards</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1838"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1854"/>
+ <source>If enabled, you can use a virtual keyboard in MythTV&apos;s line edit boxes. To use, hit SELECT (Enter or Space) while a line edit is in focus.</source>
+ <translation>If enabled, you can use a virtual keyboard in MythTV&apos;s line edit boxes. To use, hit SELECT (Enter or Space) while a line edit is in focus.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1850"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1866"/>
+ <source>Idle time before entering standby mode (minutes)</source>
+- <translation>Idle time before entering standby mode (minutes)</translation>
++ <translation>Idle Time Before Entering Standby Mode (minutes)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1855"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1871"/>
+ <source>Number of minutes to wait when the frontend is idle before entering standby mode. Standby mode allows the backend to power down if configured to do so. Any remote or mouse input will cause the countdown to start again and/or exit idle mode. Video playback suspends the countdown. A value of zero prevents the frontend automatically entering standby.</source>
+ <translation>Number of minutes to wait when the frontend is idle before entering standby mode. Standby mode allows the backend to power down if configured to do so. Any remote or mouse input will cause the countdown to start again and/or exit idle mode. Video playback suspends the countdown. A value of zero prevents the frontend automatically entering standby.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1874"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1890"/>
+ <source>Customize exit menu options</source>
+- <translation>Customize exit menu options</translation>
++ <translation>Customize Exit Menu Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1876"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1892"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1877"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1893"/>
+ <source>Show quit</source>
+- <translation>Show quit</translation>
++ <translation>Show Quit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1878"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1894"/>
+ <source>Show quit and shutdown</source>
+- <translation>Show quit and shutdown</translation>
++ <translation>Show Quit and Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1879"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1895"/>
+ <source>Show quit, reboot and shutdown</source>
+- <translation>Show quit, reboot and shutdown</translation>
++ <translation>Show Quit, Reboot and Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1881"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1897"/>
+ <source>Show shutdown</source>
+- <translation>Show shutdown</translation>
++ <translation>Show Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1882"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1898"/>
+ <source>Show reboot</source>
+- <translation>Show reboot</translation>
++ <translation>Show Reboot</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1883"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1899"/>
+ <source>Show reboot and shutdown</source>
+- <translation>Show reboot and shutdown</translation>
++ <translation>Show Reboot and Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1884"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1900"/>
+ <source>Show standby</source>
+- <translation>Show standby</translation>
++ <translation>Show Standby</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1887"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1903"/>
+ <source>By default, only remote frontends are shown the shutdown option on the exit menu. Here you can force specific shutdown and reboot options to be displayed.</source>
+ <translation>By default, only remote frontends are shown the shutdown option on the exit menu. Here you can force specific shutdown and reboot options to be displayed.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1898"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1914"/>
+ <source>Reboot command</source>
+- <translation>Reboot command</translation>
++ <translation>Reboot Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1902"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1918"/>
+ <source>Optional. Script to run if you select the reboot option from the exit menu, if the option is displayed. You must configure an exit key to display the exit menu.</source>
+ <translation>Optional. Script to run if you select the reboot option from the exit menu, if the option is displayed. You must configure an exit key to display the exit menu.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1915"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1931"/>
+ <source>Halt command</source>
+- <translation>Halt command</translation>
++ <translation>Halt Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1919"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1935"/>
+ <source>Optional. Script to run if you select the shutdown option from the exit menu, if the option is displayed. You must configure an exit key to display the exit menu.</source>
+ <translation>Optional. Script to run if you select the shutdown option from the exit menu, if the option is displayed. You must configure an exit key to display the exit menu.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1932"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1948"/>
+ <source>LIRC daemon socket</source>
+- <translation>LIRC daemon socket</translation>
++ <translation>LIRC Daemon Socket</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1942"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1958"/>
+ <source>UNIX socket or IP address[:port] to connect in order to communicate with the LIRC Daemon.</source>
+ <translation>UNIX socket or IP address[:port] to connect in order to communicate with the LIRC Daemon.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1954"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1970"/>
+ <source>Screen shot path</source>
+- <translation>Screen shot path</translation>
++ <translation>Screenshot Path</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1958"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1974"/>
+ <source>Path to screenshot storage location. Should be writable by the frontend</source>
+- <translation>Path to screenshot storage location. Should be writable by the frontend</translation>
++ <translation>Path to screenshot storage location. Path must be writable by MythFrontend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1969"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1985"/>
+ <source>Setup PIN code</source>
+- <translation>Setup PIN code</translation>
++ <translation>Setup PIN Code</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1971"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1987"/>
+ <source>This PIN is used to control access to the setup menus. If you want to use this feature, then setting the value to all numbers will make your life much easier. Set it to blank to disable. If enabled, you will not be able to return to this screen and reset the Setup PIN without first entering the current PIN.</source>
+ <translation>This PIN is used to control access to the setup menus. If you want to use this feature, then setting the value to all numbers will make your life much easier. Set it to blank to disable. If enabled, you will not be able to return to this screen and reset the Setup PIN without first entering the current PIN.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3022"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2845"/>
++ <source>Names exempt from prefix removal</source>
++ <translation>Names Exempt from Prefix Removal</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2847"/>
++ <source>This list of names will be exempt from removing the common prefixes (The, A, An) from a title or filename. Enter multiple names separated by semicolons.</source>
++ <translation>This list of names will be exempt from removing the common prefixes (The, A, An) from a title or filename. Enter multiple names separated by semicolons.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3127"/>
+ <source>Enable Network Remote Control interface</source>
+- <translation>Enable Network Remote Control interface</translation>
++ <translation>Enable Network Remote Control Interface</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3025"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3130"/>
+ <source>This enables support for controlling MythFrontend over the network.</source>
+ <translation>This enables support for controlling MythFrontend over the network.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3038"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3143"/>
+ <source>Network Remote Control port</source>
+- <translation>Network Remote Control port</translation>
++ <translation>Network Remote Control Port</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3042"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3147"/>
+ <source>This specifies what port the Network Remote Control interface will listen on for new connections.</source>
+ <translation>This specifies what port the Network Remote Control interface will listen on for new connections.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3053"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3158"/>
+ <source>UDP notify port</source>
+- <translation>UDP notify port</translation>
++ <translation>UDP Notify Port</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3057"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3162"/>
+ <source>MythTV will listen for connections from the &quot;mythutil&quot; program on this port.</source>
+ <translation>MythTV will listen for connections from the &quot;mythutil&quot; program on this port.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3070"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3173"/>
++ <source>Enable CEC Control interface</source>
++ <translation>Enable CEC Control Interface</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3175"/>
++ <source>This enables controlling MythFrontend from a TV remote or powering the TV on and off from a MythTV remote if you have compatible hardware. These settings only take effect after a restart.</source>
++ <translation>This enables controlling MythFrontend from a TV remote or powering the TV on and off from a MythTV remote if you have compatible hardware. These settings only take effect after a restart.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3187"/>
++ <source>Allow Power On TV</source>
++ <translation>Allow Power On TV</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3188"/>
++ <source>Enables your TV to be powered on from MythTV remote or when MythTV starts if you have compatible hardware.</source>
++ <translation>Enables your TV to be powered on from MythTV remote or when MythFrontend starts if you have compatible hardware.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3198"/>
++ <source>Allow Power Off TV</source>
++ <translation>Allow Power Off TV</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3199"/>
++ <source>Enables your TV to be powered off from MythTV remote or when MythTV starts if you have compatible hardware.</source>
++ <translation>Enables your TV to be powered off from MythTV remote or when MythFrontend starts if you have compatible hardware.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3209"/>
++ <source>Power on TV At Start</source>
++ <translation>Power On TV at Start</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3210"/>
++ <source>Powers on your TV when you start MythTV if you have compatible hardware.</source>
++ <translation>Powers on your TV when you start MythFrontend if you have compatible hardware.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3220"/>
++ <source>Power off TV At Exit</source>
++ <translation>Power Off TV at Exit</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3221"/>
++ <source>Powers off your TV when you exit MythTV if you have compatible hardware.</source>
++ <translation>Powers off your TV when you exit MythFrontend if you have compatible hardware.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3236"/>
+ <source>Enable AirPlay</source>
+ <translation>Enable AirPlay</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3072"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3238"/>
+ <source>AirPlay lets you wirelessly view content on your TV from your iPhone, iPad, iPod Touch, or iTunes on your computer.</source>
+ <translation>AirPlay lets you wirelessly view content on your TV from your iPhone, iPad, iPod Touch, or iTunes on your computer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3086"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3252"/>
+ <source>Only support AirTunes (no video)</source>
+- <translation>Only support AirTunes (no video)</translation>
++ <translation>Only Support AirTunes (no video)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3088"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3254"/>
+ <source>Only stream audio from your iPhone, iPad, iPod Touch, or iTunes on your computer</source>
+- <translation>Only stream audio from your iPhone, iPad, iPod Touch, or iTunes on your computer</translation>
++ <translation>Only stream audio from your iPhone, iPad, iPod Touch, or iTunes on your computer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3101"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3267"/>
+ <source>Require password</source>
+- <translation>Require password</translation>
++ <translation>Require Password</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3105"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3271"/>
+ <source>Require a password to use AirPlay. Your iPhone, iPad, iPod Touch, or iTunes on your computer will prompt you when required</source>
+ <translation>Require a password to use AirPlay. Your iPhone, iPad, iPod Touch, or iTunes on your computer will prompt you when required</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3118"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3282"/>
++ <source>Password</source>
++ <translation>Password</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3286"/>
+ <source>Your iPhone, iPad, iPod Touch, or iTunes on your computer will prompt you for this password when required</source>
+- <translation>Your iPhone, iPad, iPod Touch, or iTunes on your computer will prompt you for this password when required</translation>
++ <translation>Your iPhone, iPad, iPod Touch, or iTunes on your computer will prompt you for this password when required.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3297"/>
++ <source>AirPlay - Password</source>
++ <translation>AirPlay - Password</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3140"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3308"/>
+ <source>AirPlay full screen playback</source>
+- <translation>AirPlay full screen playback</translation>
++ <translation>AirPlay Fullscreen Playback</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3144"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3312"/>
+ <source>During music playback, displays album cover and various media information in full screen mode</source>
+ <translation>During music playback, displays album cover and various media information in full screen mode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3154"/>
+- <source>All AirPlay settings take effect when you restart MythFrontend.</source>
+- <translation>All AirPlay settings take effect when you restart MythFrontend.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3165"/>
+- <source>AirTunes RSA key couldn&apos;t be loaded. Check http://www.mythtv.org/wiki/AirTunes/AirPlay. Last Error: %1</source>
+- <translation>AirTunes RSA key couldn&apos;t be loaded. Check http://www.mythtv.org/wiki/AirTunes/AirPlay. Last Error: %1</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3368"/>
++ <source>Ignore devices</source>
++ <translation>Ignore Devices</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3172"/>
+- <source>AirTunes RSA key successfully loaded.</source>
+- <translation>AirTunes RSA key successfully loaded.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3372"/>
++ <source>If there are any devices that you do not want to be monitored, list them here with commas in-between. The plugins will ignore them. Requires restart.</source>
++ <translation>If there are any devices that you do not want to be monitored, list them here with commas in between. The plugins will ignore them. Requires restart.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3200"/>
+- <source>Ignore devices</source>
+- <translation>Ignore devices</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3485"/>
++ <source>This enables support for monitoring your CD/DVD drives for new disks and launching the proper plugin to handle them. Requires restart.</source>
++ <translation>This enables support for monitoring your CD/DVD drives for new disks and launching the proper plugin to handle them. Requires restart.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3204"/>
+- <source>If there are any devices that you do not want to be monitored, list them here with commas in-between. The plugins will ignore them. Requires restart.</source>
+- <translation>If there are any devices that you do not want to be monitored, list them here with commas in-between. The plugins will ignore them. Requires restart.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3968"/>
++ <source>Main Settings</source>
++ <translation>Main Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3848"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3973"/>
+ <source>Settings Access</source>
+ <translation>Settings Access</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3854"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3978"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3861"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3483"/>
+ <source>Media Monitor</source>
+ <translation>Media Monitor</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3867"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="76"/>
++ <source>Decoder Device for VAAPI2 hardware decoding</source>
++ <translation>Decoder Device for VAAPI2 Hardware Decoding</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="80"/>
++ <source>Use this if your system does not detect the VAAPI device. Example: &apos;/dev/dri/renderD128&apos;.</source>
++ <translation>Use this if your system does not detect the VAAPI device. Example: &apos;/dev/dri/renderD128&apos;.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4001"/>
+ <source>Remote Control</source>
+ <translation>Remote Control</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3877"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4026"/>
+ <source>AirPlay Settings</source>
+ <translation>AirPlay Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3889"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3929"/>
+ <source>Shutdown/Reboot Settings</source>
+ <translation>Shutdown/Reboot Settings</translation>
+ </message>
+@@ -9800,173 +9735,162 @@
+ <message>
+ <location filename="../programs/mythfrontend/manualschedule.cpp" line="93"/>
+ <source>5 weekdays if daily</source>
+- <translation>5 weekdays if daily</translation>
++ <translation>5 Weekdays if Daily</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/manualschedule.cpp" line="95"/>
+ <source>7 days per week if daily</source>
+- <translation>7 days per week if daily</translation>
++ <translation>7 Days Per Week if Daily</translation>
+ </message>
+ </context>
+ <context>
+ <name>MediaMonitor</name>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="197"/>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="673"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="212"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="230"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="245"/>
+ <source>Select removable media to eject or insert</source>
+- <translation>Select removable media to eject or insert</translation>
++ <translation>Select Removable Media to Eject or Insert</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="239"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="254"/>
+ <source>No devices to eject</source>
+- <translation>No devices to eject</translation>
++ <translation>No Devices to Eject</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="284"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="299"/>
+ <source>Failed to unmount %1</source>
+- <translation>Failed to unmount %1</translation>
++ <translation>Failed to Unmount %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="301"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="316"/>
+ <source>You may safely remove %1</source>
+- <translation>You may safely remove %1</translation>
++ <translation>You May Safely Remove %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="305"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="320"/>
+ <source>Failed to eject %1</source>
+- <translation>Failed to eject %1</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="679"/>
+- <source>Media Handler Selection</source>
+- <translation>Media Handler Selection</translation>
++ <translation>Failed to Eject %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="680"/>
+- <source>The new media contains mixed content that can be rendered in different ways. Select your preferred method.</source>
+- <translation>The new media contains mixed content that can be rendered in different ways. Select your preferred method.</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="872"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="886"/>
+ <source>Select a CD drive</source>
+- <translation>Select a CD drive</translation>
++ <translation>Select a CD Drive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="881"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="895"/>
+ <source>Select a VCD drive</source>
+- <translation>Select a VCD drive</translation>
++ <translation>Select a VCD Drive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="890"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="904"/>
+ <source>Select a DVD drive</source>
+- <translation>Select a DVD drive</translation>
++ <translation>Select a DVD Drive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="899"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="913"/>
+ <source>Select a CD writer</source>
+- <translation>Select a CD writer</translation>
++ <translation>Select a CD Writer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="911"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="925"/>
+ <source>Select a DVD writer</source>
+- <translation>Select a DVD writer</translation>
++ <translation>Select a DVD Writer</translation>
+ </message>
+ </context>
+ <context>
+ <name>MetadataOptions</name>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1420"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1399"/>
+ <source>Trying to manually find this recording online...</source>
+- <translation>Trying to manually find this recording online...</translation>
++ <translation>Trying to Manually Find This Recording Online...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1437"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1416"/>
+ <source>Downloading selected artwork...</source>
+- <translation>Downloading selected artwork...</translation>
++ <translation>Downloading Selected Artwork...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1585"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1564"/>
+ <source>You must set a reference number on this rule to set artwork. For items without a metadata source, you can set any unique value.</source>
+- <translation>You must set a reference number on this rule to set artwork. For items without a metadata source, you can set any unique value.</translation>
++ <translation>You must set a reference number on this rule to set artwork. For items without a metadata source, you can set any unique value.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1638"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1617"/>
+ <source>Searching for available artwork...</source>
+- <translation>Searching for available artwork...</translation>
++ <translation>Searching for Available Artwork...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1664"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1643"/>
+ <source>No image found</source>
+- <translation>No image found</translation>
++ <translation>No Image Found</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1664"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1914"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1643"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1893"/>
+ <source>Schedule Editor</source>
+ <translation>Schedule Editor</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1833"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1812"/>
+ <source>No match found for this recording. You can try entering a TVDB/TMDB number, season, and episode manually.</source>
+ <translation>No match found for this recording. You can try entering a TVDB/TMDB number, season, and episode manually.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1877"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1856"/>
+ <source>This number, season, and episode combination does not appear to be valid (or the site may be down). Check your information and try again.</source>
+ <translation>This number, season, and episode combination does not appear to be valid (or the site may be down). Check your information and try again.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1913"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1892"/>
+ <source>Failed to retrieve image(s)</source>
+- <translation>Failed to retrieve image(s)</translation>
++ <translation>Failed to Retrieve Image(s)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1915"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="1894"/>
+ <source>Check logs</source>
+- <translation>Check logs</translation>
++ <translation>Check Logs</translation>
+ </message>
+ </context>
+ <context>
+ <name>MetadataSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="96"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="93"/>
+ <source>If set, this will enable a button called &quot;Watch With Trailers&quot; which will play a user-specified number of trailers before the movie.</source>
+ <translation>If set, this will enable a button called &quot;Watch With Trailers&quot; which will play a user-specified number of trailers before the movie.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="100"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="97"/>
+ <source>Number of trailers to play before a film.</source>
+ <translation>Number of trailers to play before a film.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="102"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="99"/>
+ <source>If set, all files below the MythVideo directory will be displayed unless their extension is explicitly set to be ignored.</source>
+ <translation>If set, all files below the MythVideo directory will be displayed unless their extension is explicitly set to be ignored.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="106"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="103"/>
+ <source>If set, every time a scan for new videos is performed, a mass metadata update of the collection will also occur.</source>
+ <translation>If set, every time a scan for new videos is performed, a mass metadata update of the collection will also occur.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="110"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="107"/>
+ <source>If set along with Browse Files, this will cause the Video List to load any known video metadata from the database. Turning this off can greatly speed up how long it takes to load the Video List tree.</source>
+ <translation>If set along with Browse Files, this will cause the Video List to load any known video metadata from the database. Turning this off can greatly speed up how long it takes to load the Video List tree.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="114"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="111"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="115"/>
++ <location filename="../programs/mythfrontend/videometadatasettings.cpp" line="112"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ </context>
+ <context>
+@@ -9986,25 +9910,25 @@
+ <context>
+ <name>MusicMetadata</name>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="872"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="881"/>
+ <source>Unknown Artist</source>
+ <comment>Default artist if no artist</comment>
+ <translation>Unknown Artist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="877"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="886"/>
+ <source>Unknown Album</source>
+ <comment>Default album if no album</comment>
+ <translation>Unknown Album</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="881"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="890"/>
+ <source>Unknown Genre</source>
+ <comment>Default genre if no genre</comment>
+ <translation>Unknown Genre</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="1108"/>
++ <location filename="../libs/libmythmetadata/musicmetadata.cpp" line="1136"/>
+ <source>Never Played</source>
+ <translation>Never Played</translation>
+ </message>
+@@ -10012,24 +9936,24 @@
+ <context>
+ <name>MythAirplayServer</name>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="593"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="586"/>
+ <source>Client disconnected</source>
+- <translation>Client disconnected</translation>
++ <translation>Client Disconnected</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="593"/>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="736"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="586"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="729"/>
+ <source>AirPlay</source>
+ <translation>AirPlay</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="594"/>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="737"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="587"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="730"/>
+ <source>from %1</source>
+ <translation>from %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="736"/>
++ <location filename="../libs/libmythtv/AirPlay/mythairplayserver.cpp" line="729"/>
+ <source>New Connection</source>
+ <translation>New Connection</translation>
+ </message>
+@@ -10050,1649 +9974,1682 @@
+ <context>
+ <name>MythControls</name>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1269"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1207"/>
+ <source>Page Up</source>
+ <translation>Page Up</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1271"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1209"/>
+ <source>Page Down</source>
+ <translation>Page Down</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="541"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="549"/>
+ <source>Play Program</source>
+ <translation>Play Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="543"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="551"/>
+ <source>Stop Program</source>
+ <translation>Stop Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="545"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="653"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="553"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="664"/>
+ <source>Toggle recording status of current program</source>
+- <translation>Toggle recording status of current program</translation>
++ <translation>Toggle Recording Status of Current Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="547"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="555"/>
+ <source>Page the program guide back one day</source>
+- <translation>Page the program guide back one day</translation>
++ <translation>Page the Program Guide Back One Day</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="549"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="557"/>
+ <source>Page the program guide forward one day</source>
+- <translation>Page the program guide forward one day</translation>
++ <translation>Page the Program Guide Forward One Day</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="551"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="559"/>
+ <source>Page the program guide left</source>
+- <translation>Page the program guide left</translation>
++ <translation>Page the Program Guide Left</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="553"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="561"/>
+ <source>Page the program guide right</source>
+- <translation>Page the program guide right</translation>
++ <translation>Page the Program Guide Right</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="555"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="655"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="563"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="666"/>
+ <source>Toggle the current channel as a favorite</source>
+- <translation>Toggle the current channel as a favorite</translation>
++ <translation>Toggle the Current Channel as a Favorite</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="557"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="565"/>
+ <source>Reverse the channel order in the program guide</source>
+- <translation>Reverse the channel order in the program guide</translation>
++ <translation>Reverse the Channel Order in the Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="559"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="813"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="567"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="830"/>
+ <source>Show the Program Guide</source>
+ <translation>Show the Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="561"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="815"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="569"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="832"/>
+ <source>Show the Program Finder</source>
+ <translation>Show the Program Finder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="563"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="571"/>
+ <source>Show the Channel Search</source>
+ <translation>Show the Channel Search</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="565"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="573"/>
+ <source>Cycle through channel groups and all channels in the program guide.</source>
+- <translation>Cycle through channel groups and all channels in the program guide.</translation>
++ <translation>Cycle Through Channel Groups and All Channels in the Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="568"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="576"/>
+ <source>Switch channels without exiting guide in Live TV mode.</source>
+- <translation>Switch channels without exiting guide in Live TV mode.</translation>
++ <translation>Switch Channels Without Exiting Guide in Live TV Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="570"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="657"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="578"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="668"/>
+ <source>Volume down</source>
+- <translation>Volume down</translation>
++ <translation>Volume Down</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="572"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="659"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="580"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="670"/>
+ <source>Volume up</source>
+- <translation>Volume up</translation>
++ <translation>Volume Up</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="574"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="661"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="582"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="672"/>
+ <source>Mute</source>
+ <translation>Mute</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="576"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="665"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="584"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="676"/>
+ <source>Cycle audio channels</source>
+- <translation>Cycle audio channels</translation>
++ <translation>Cycle Audio Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="578"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="586"/>
+ <source>Increase program or channel rank</source>
+- <translation>Increase program or channel rank</translation>
++ <translation>Increase Program or Channel Rank</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="580"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="588"/>
+ <source>Decrease program or channel rank</source>
+- <translation>Decrease program or channel rank</translation>
++ <translation>Decrease Program or Channel Rank</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="582"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="590"/>
+ <source>List upcoming episodes</source>
+- <translation>List upcoming episodes</translation>
++ <translation>List Upcoming Episodes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="584"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="592"/>
+ <source>List scheduled upcoming episodes</source>
+- <translation>List scheduled upcoming episodes</translation>
++ <translation>List Scheduled Upcoming Episodes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="586"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="594"/>
+ <source>List previously recorded episodes</source>
+- <translation>List previously recorded episodes</translation>
++ <translation>List Previously Recorded Episodes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="588"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="596"/>
+ <source>Show details</source>
+- <translation>Show details</translation>
++ <translation>Show Details</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="592"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="600"/>
+ <source>Edit Custom Record Rule</source>
+ <translation>Edit Custom Record Rule</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="594"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="602"/>
+ <source>Change Recording Group</source>
+ <translation>Change Recording Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="596"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="604"/>
+ <source>Change Group View</source>
+ <translation>Change Group View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="598"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="606"/>
+ <source>List recorded episodes</source>
+- <translation>List recorded episodes</translation>
++ <translation>List Recorded Episodes</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="608"/>
++ <source>Add Bookmark</source>
++ <translation>Add Bookmark</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="610"/>
++ <source>Toggle Bookmark</source>
++ <translation>Toggle Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="601"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="612"/>
+ <source>Exit or return to DVD menu</source>
+- <translation>Exit or return to DVD menu</translation>
++ <translation>Exit or Return to DVD Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="603"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="614"/>
+ <source>Playback Compact Menu</source>
+ <translation>Playback Compact Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="605"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="616"/>
+ <source>Clear OSD</source>
+ <translation>Clear OSD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="607"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="618"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="609"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="620"/>
+ <source>Fast Forward</source>
+ <translation>Fast Forward</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="611"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="622"/>
+ <source>Rewind</source>
+ <translation>Rewind</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="613"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="624"/>
+ <source>Arbitrary Seek</source>
+ <translation>Arbitrary Seek</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="615"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="626"/>
+ <source>Seek to a position in seconds</source>
+- <translation>Seek to a position in seconds</translation>
++ <translation>Seek to a Position in Seconds</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="617"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="628"/>
+ <source>Channel up</source>
+- <translation>Channel up</translation>
++ <translation>Channel Up</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="619"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="630"/>
+ <source>Channel down</source>
+- <translation>Channel down</translation>
++ <translation>Channel Down</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="621"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="632"/>
+ <source>Switch to the next favorite channel</source>
+- <translation>Switch to the next favorite channel</translation>
++ <translation>Switch to the Next Favorite Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="623"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="634"/>
+ <source>Switch to the previous channel</source>
+- <translation>Switch to the previous channel</translation>
++ <translation>Switch to the Previous Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="625"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="636"/>
+ <source>Jump ahead</source>
+- <translation>Jump ahead</translation>
++ <translation>Jump Ahead</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="627"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="638"/>
+ <source>Jump back</source>
+- <translation>Jump back</translation>
++ <translation>Jump Back</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="629"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="640"/>
+ <source>Info utilizing cutlist</source>
+- <translation>Info utilizing cutlist</translation>
++ <translation>Info Utilizing Cutlist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="631"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="642"/>
+ <source>Jump to bookmark</source>
+- <translation>Jump to bookmark</translation>
++ <translation>Jump to Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="637"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="648"/>
+ <source>Next Video Source</source>
+ <translation>Next Video Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="639"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="650"/>
+ <source>Previous Video Source</source>
+ <translation>Previous Video Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="641"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="652"/>
+ <source>Next Input</source>
+ <translation>Next Input</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="643"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="654"/>
+ <source>Next Card</source>
+ <translation>Next Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="645"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="656"/>
+ <source>Skip Commercial</source>
+ <translation>Skip Commercial</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="647"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="658"/>
+ <source>Skip Commercial (Reverse)</source>
+ <translation>Skip Commercial (Reverse)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="649"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="660"/>
+ <source>Jump to the start of the recording.</source>
+- <translation>Jump to the start of the recording.</translation>
++ <translation>Jump to the Start of the Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="651"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="662"/>
+ <source>Toggle channel browse mode</source>
+- <translation>Toggle channel browse mode</translation>
++ <translation>Toggle Channel Browse Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="663"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="674"/>
+ <source>Set the volume</source>
+- <translation>Set the volume</translation>
++ <translation>Set the Volume</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="667"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="678"/>
+ <source>Toggle audio upmixer</source>
+- <translation>Toggle audio upmixer</translation>
++ <translation>Toggle Audio Upmixer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="669"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="680"/>
+ <source>Toggle Picture-in-Picture view</source>
+- <translation>Toggle Picture-in-Picture view</translation>
++ <translation>Toggle Picture-in-Picture View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="671"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="682"/>
+ <source>Toggle Picture-by-Picture view</source>
+- <translation>Toggle Picture-by-Picture view</translation>
++ <translation>Toggle Picture-by-Picture View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="673"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="684"/>
+ <source>Create Picture-in-Picture view</source>
+- <translation>Create Picture-in-Picture view</translation>
++ <translation>Create Picture-in-Picture View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="675"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="686"/>
+ <source>Create Picture-by-Picture view</source>
+- <translation>Create Picture-by-Picture view</translation>
++ <translation>Create Picture-by-Picture View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="677"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="688"/>
+ <source>Toggle active PIP/PBP window</source>
+- <translation>Toggle active PIP/PBP window</translation>
++ <translation>Toggle Active PIP/PBP Window</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="679"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="690"/>
+ <source>Swap PBP/PIP Windows</source>
+ <translation>Swap PBP/PIP Windows</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="681"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="692"/>
+ <source>Change PxP view</source>
+- <translation>Change PxP view</translation>
++ <translation>Change PxP View</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="695"/>
++ <source>Move BottomLine off screen</source>
++ <translation>Move Bottom Line Off Screen</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="698"/>
++ <source>Save manual zoom for BottomLine</source>
++ <translation>Save Manual Zoom for Bottom Line</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="683"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="700"/>
+ <source>Toggle the video aspect ratio</source>
+- <translation>Toggle the video aspect ratio</translation>
++ <translation>Toggle the Video Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="685"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="702"/>
+ <source>Next Preconfigured Zoom mode</source>
+- <translation>Next Preconfigured Zoom mode</translation>
++ <translation>Next Preconfigured Zoom Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="687"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="704"/>
+ <source>Toggle any captions</source>
+- <translation>Toggle any captions</translation>
++ <translation>Toggle any Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="689"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="706"/>
+ <source>Enable any captions</source>
+- <translation>Enable any captions</translation>
++ <translation>Enable any Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="691"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="708"/>
+ <source>Disable any captions</source>
+- <translation>Disable any captions</translation>
++ <translation>Disable any Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="693"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="710"/>
+ <source>Toggle Teletext Captions</source>
+ <translation>Toggle Teletext Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="695"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="712"/>
+ <source>Toggle Subtitles</source>
+ <translation>Toggle Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="697"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="714"/>
+ <source>Toggle VBI CC</source>
+ <translation>Toggle VBI CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="699"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="716"/>
+ <source>Toggle ATSC CC</source>
+ <translation>Toggle ATSC CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="701"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="718"/>
+ <source>Toggle Teletext Menu</source>
+ <translation>Toggle Teletext Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="703"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="720"/>
+ <source>Toggle External Subtitles</source>
+ <translation>Toggle External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="705"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="722"/>
+ <source>Enable External Subtitles</source>
+ <translation>Enable External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="707"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="724"/>
+ <source>Disable External Subtitles</source>
+ <translation>Disable External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="709"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="726"/>
+ <source>Toggle Text Subtitles</source>
+ <translation>Toggle Text Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="712"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="729"/>
+ <source>Play audio track 1</source>
+- <translation>Play audio track 1</translation>
++ <translation>Play Audio Track 1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="714"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="731"/>
+ <source>Play audio track 2</source>
+- <translation>Play audio track 2</translation>
++ <translation>Play Audio Track 2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="716"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="733"/>
+ <source>Display subtitle 1</source>
+- <translation>Display subtitle 1</translation>
++ <translation>Display Subtitle 1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="718"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="735"/>
+ <source>Display subtitle 2</source>
+- <translation>Display subtitle 2</translation>
++ <translation>Display Subtitle 2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="720"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="737"/>
+ <source>Display Text Subtitle 1</source>
+ <translation>Display Text Subtitle 1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="722"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="739"/>
+ <source>Display VBI CC1</source>
+ <translation>Display VBI CC1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="724"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="741"/>
+ <source>Display VBI CC2</source>
+ <translation>Display VBI CC2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="726"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="743"/>
+ <source>Display VBI CC3</source>
+ <translation>Display VBI CC3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="728"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="745"/>
+ <source>Display VBI CC4</source>
+ <translation>Display VBI CC4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="730"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="747"/>
+ <source>Display ATSC CC1</source>
+ <translation>Display ATSC CC1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="732"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="749"/>
+ <source>Display ATSC CC2</source>
+ <translation>Display ATSC CC2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="734"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="751"/>
+ <source>Display ATSC CC3</source>
+ <translation>Display ATSC CC3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="736"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="753"/>
+ <source>Display ATSC CC4</source>
+ <translation>Display ATSC CC4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="738"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="755"/>
+ <source>Enable Forced Subtitles</source>
+ <translation>Enable Forced Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="740"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="757"/>
+ <source>Disable Forced Subtitles</source>
+ <translation>Disable Forced Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="743"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="760"/>
+ <source>Next audio track</source>
+- <translation>Next audio track</translation>
++ <translation>Next Audio Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="745"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="762"/>
+ <source>Previous audio track</source>
+- <translation>Previous audio track</translation>
++ <translation>Previous Audio Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="747"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="764"/>
+ <source>Next subtitle track</source>
+- <translation>Next subtitle track</translation>
++ <translation>Next Subtitle Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="749"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="766"/>
+ <source>Previous subtitle track</source>
+- <translation>Previous subtitle track</translation>
++ <translation>Previous Subtitle Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="751"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="768"/>
+ <source>Next Text track</source>
+- <translation>Next Text track</translation>
++ <translation>Next Text Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="753"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="770"/>
+ <source>Previous Text track</source>
+- <translation>Previous Text track</translation>
++ <translation>Previous Text Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="755"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="772"/>
+ <source>Next VBI CC track</source>
+- <translation>Next VBI CC track</translation>
++ <translation>Next VBI CC Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="757"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="774"/>
+ <source>Previous VBI CC track</source>
+- <translation>Previous VBI CC track</translation>
++ <translation>Previous VBI CC Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="759"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="776"/>
+ <source>Next ATSC CC track</source>
+- <translation>Next ATSC CC track</translation>
++ <translation>Next ATSC CC Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="761"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="778"/>
+ <source>Previous ATSC CC track</source>
+- <translation>Previous ATSC CC track</translation>
++ <translation>Previous ATSC CC Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="763"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="780"/>
+ <source>Next of any captions</source>
+- <translation>Next of any captions</translation>
++ <translation>Next of any Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="766"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="783"/>
+ <source>Next video scan overidemode</source>
+- <translation>Next video scan overidemode</translation>
++ <translation>Next Video Scan Overide Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="768"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="785"/>
+ <source>Queue the current recording for transcoding</source>
+- <translation>Queue the current recording for transcoding</translation>
++ <translation>Queue the Current Recording for Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="770"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="787"/>
+ <source>Increase the playback speed</source>
+- <translation>Increase the playback speed</translation>
++ <translation>Increase the Playback Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="772"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="789"/>
+ <source>Decrease the playback speed</source>
+- <translation>Decrease the playback speed</translation>
++ <translation>Decrease the Playback Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="774"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="791"/>
+ <source>Turn on time stretch control</source>
+- <translation>Turn on time stretch control</translation>
++ <translation>Turn on Time Stretch Control</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="776"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="793"/>
+ <source>Increase time stretch speed</source>
+- <translation>Increase time stretch speed</translation>
++ <translation>Increase Time Stretch Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="778"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="795"/>
+ <source>Decrease time stretch speed</source>
+- <translation>Decrease time stretch speed</translation>
++ <translation>Decrease Time Stretch Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="780"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="797"/>
+ <source>Toggle time stretch speed</source>
+- <translation>Toggle time stretch speed</translation>
++ <translation>Toggle Time Stretch Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="783"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="800"/>
+ <source>Turn on audio sync adjustment controls</source>
+- <translation>Turn on audio sync adjustment controls</translation>
++ <translation>Turn on Audio Sync Adjustment Controls</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="786"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="803"/>
+ <source>Set the audio sync adjustment</source>
+- <translation>Set the audio sync adjustment</translation>
++ <translation>Set the Audio Sync Adjustment</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="789"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="802"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="806"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="819"/>
+ <source>Playback picture adjustments</source>
+- <translation>Playback picture adjustments</translation>
++ <translation>Playback Picture Adjustments</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="792"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="809"/>
+ <source>Toggle night mode</source>
+- <translation>Toggle night mode</translation>
++ <translation>Toggle Night Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="794"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="811"/>
+ <source>Set the picture brightness</source>
+- <translation>Set the picture brightness</translation>
++ <translation>Set the Picture Brightness</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="796"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="813"/>
+ <source>Set the picture contrast</source>
+- <translation>Set the picture contrast</translation>
++ <translation>Set the Picture Contrast</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="798"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="815"/>
+ <source>Set the picture color</source>
+- <translation>Set the picture color</translation>
++ <translation>Set the Picture Color</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="800"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="817"/>
+ <source>Set the picture hue</source>
+- <translation>Set the picture hue</translation>
++ <translation>Set the Picture Hue</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="805"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="822"/>
+ <source>Recording picture adjustments for this channel</source>
+- <translation>Recording picture adjustments for this channel</translation>
++ <translation>Recording Picture Adjustments for This Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="808"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="825"/>
+ <source>Recording picture adjustments for this recorder</source>
+- <translation>Recording picture adjustments for this recorder</translation>
++ <translation>Recording Picture Adjustments for This Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="811"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="828"/>
+ <source>Cycle Commercial Skip mode</source>
+- <translation>Cycle Commercial Skip mode</translation>
++ <translation>Cycle Commercial Skip Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="817"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="834"/>
+ <source>Toggle the Sleep Timer</source>
+ <translation>Toggle the Sleep Timer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="819"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="836"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="821"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="838"/>
+ <source>Jump to previously played recording</source>
+- <translation>Jump to previously played recording</translation>
++ <translation>Jump to Previously Played Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="823"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="840"/>
+ <source>Display menu of recorded programs to jump to</source>
+- <translation>Display menu of recorded programs to jump to</translation>
++ <translation>Display Menu of Recorded Programs to Jump to</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="825"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="842"/>
+ <source>Display scheduled recording list</source>
+- <translation>Display scheduled recording list</translation>
++ <translation>Display Scheduled Recording List</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="827"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="844"/>
+ <source>Display previously recorded episodes</source>
+- <translation>Display previously recorded episodes</translation>
++ <translation>Display Previously Recorded Episodes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="829"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="846"/>
+ <source>Monitor Signal Quality</source>
+ <translation>Monitor Signal Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="832"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="849"/>
+ <source>Jump to the DVD Root Menu</source>
+ <translation>Jump to the DVD Root Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="834"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="851"/>
+ <source>Jump to the Popup Menu</source>
+ <translation>Jump to the Popup Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="836"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="853"/>
+ <source>Jump to the DVD Chapter Menu</source>
+ <translation>Jump to the DVD Chapter Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="838"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="855"/>
+ <source>Jump to the DVD Title Menu</source>
+ <translation>Jump to the DVD Title Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="840"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="857"/>
+ <source>Exit Show without any prompts</source>
+- <translation>Exit Show without any prompts</translation>
++ <translation>Exit Show Without any Prompts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="842"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="859"/>
+ <source>Jump to a chapter</source>
+- <translation>Jump to a chapter</translation>
++ <translation>Jump to a Chapter</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="844"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="861"/>
+ <source>Switch title</source>
+- <translation>Switch title</translation>
++ <translation>Switch Title</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="846"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="863"/>
+ <source>Switch angle</source>
+- <translation>Switch angle</translation>
++ <translation>Switch Angle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="848"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="865"/>
++ <source>OSD Navigation</source>
++ <translation>OSD Navigation</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="867"/>
+ <source>Zoom mode - shift up</source>
+- <translation>Zoom mode - shift up</translation>
++ <translation>Zoom Mode - Shift Up</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="850"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="869"/>
+ <source>Zoom mode - shift down</source>
+- <translation>Zoom mode - shift down</translation>
++ <translation>Zoom Mode - Shift Down</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="852"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="871"/>
+ <source>Zoom mode - shift left</source>
+- <translation>Zoom mode - shift left</translation>
++ <translation>Zoom Mode - Shift Left</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="854"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="873"/>
+ <source>Zoom mode - shift right</source>
+- <translation>Zoom mode - shift right</translation>
++ <translation>Zoom Mode - Shift Right</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="857"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="876"/>
+ <source>Zoom mode - increase aspect ratio</source>
+- <translation>Zoom mode - increase aspect ratio</translation>
++ <translation>Zoom Mode - Increase Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="860"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="879"/>
+ <source>Zoom mode - decrease aspect ratio</source>
+- <translation>Zoom mode - decrease aspect ratio</translation>
++ <translation>Zoom Mode - Decrease Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="862"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="881"/>
+ <source>Zoom mode - zoom in</source>
+- <translation>Zoom mode - zoom in</translation>
++ <translation>Zoom Mode - Zoom In</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="864"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="883"/>
+ <source>Zoom mode - zoom out</source>
+- <translation>Zoom mode - zoom out</translation>
++ <translation>Zoom Mode - Zoom Out</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="867"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="886"/>
+ <source>Zoom mode - vertical zoom in</source>
+- <translation>Zoom mode - vertical zoom in</translation>
++ <translation>Zoom Mode - Vertical Zoom in</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="870"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="889"/>
+ <source>Zoom mode - vertical zoom out</source>
+- <translation>Zoom mode - vertical zoom out</translation>
++ <translation>Zoom Mode - Vertical Zoom Out</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="873"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="892"/>
+ <source>Zoom mode - horizontal zoom in</source>
+- <translation>Zoom mode - horizontal zoom in</translation>
++ <translation>Zoom Mode - Horizontal Zoom in</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="876"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="895"/>
+ <source>Zoom mode - horizontal zoom out</source>
+- <translation>Zoom mode - horizontal zoom out</translation>
++ <translation>Zoom Mode - Horizontal Zoom Out</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="878"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="897"/>
+ <source>Zoom mode - quit and abandon changes</source>
+- <translation>Zoom mode - quit and abandon changes</translation>
++ <translation>Zoom Mode - Quit and Abandon Changes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="880"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="899"/>
+ <source>Zoom mode - commit changes</source>
+- <translation>Zoom mode - commit changes</translation>
++ <translation>Zoom Mode - Commit Changes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="904"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="923"/>
+ <source>Save cuts</source>
+- <translation>Save cuts</translation>
++ <translation>Save Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="906"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="925"/>
+ <source>Load cuts from detected commercials</source>
+- <translation>Load cuts from detected commercials</translation>
++ <translation>Load Cuts From Detected Commercials</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="916"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="935"/>
+ <source>Cut point editor compact menu</source>
+- <translation>Cut point editor compact menu</translation>
++ <translation>Cut Point Editor Compact Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="947"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="966"/>
+ <source>Toggle audio visualisation</source>
+- <translation>Toggle audio visualisation</translation>
++ <translation>Toggle Audio Visualization</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="951"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="970"/>
+ <source>Toggle OSD playback information</source>
+- <translation>Toggle OSD playback information</translation>
++ <translation>Toggle OSD Playback Information</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="955"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="974"/>
+ <source>No 3D</source>
+ <translation>No 3D</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="957"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="976"/>
+ <source>3D Side by Side</source>
+ <translation>3D Side by Side</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="959"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="978"/>
+ <source>Discard 3D Side by Side</source>
+ <translation>Discard 3D Side by Side</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="961"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="980"/>
+ <source>3D Top and Bottom</source>
+ <translation>3D Top and Bottom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="963"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="982"/>
+ <source>Discard 3D Top and Bottom</source>
+ <translation>Discard 3D Top and Bottom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="884"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="930"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="903"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="949"/>
+ <source>Menu Red</source>
+ <translation>Menu Red</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="590"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="598"/>
+ <source>Switch Recording Input view</source>
+- <translation>Switch Recording Input view</translation>
++ <translation>Switch Recording Input View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="633"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="644"/>
+ <source>Fast Forward (Sticky) or Forward one second while paused</source>
+- <translation>Fast Forward (Sticky) or Forward one second while paused</translation>
++ <translation>Fast Forward (Sticky) or Forward One Second While Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="635"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="646"/>
+ <source>Rewind (Sticky) or Rewind one second while paused</source>
+- <translation>Rewind (Sticky) or Rewind one second while paused</translation>
++ <translation>Rewind (Sticky) or Rewind One Second While Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="886"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="932"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="905"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="951"/>
+ <source>Menu Green</source>
+ <translation>Menu Green</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="888"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="934"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="907"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="953"/>
+ <source>Menu Yellow</source>
+ <translation>Menu Yellow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="890"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="936"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="909"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="955"/>
+ <source>Menu Blue</source>
+ <translation>Menu Blue</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="892"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="911"/>
+ <source>Menu Exit</source>
+ <translation>Menu Exit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="894"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="913"/>
+ <source>Menu Text</source>
+ <translation>Menu Text</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="896"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="915"/>
+ <source>Menu EPG</source>
+ <translation>Menu EPG</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="900"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="919"/>
+ <source>Clear editing cut points</source>
+- <translation>Clear editing cut points</translation>
++ <translation>Clear Editing Cut Points</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="902"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="921"/>
+ <source>Invert Begin/End cut points</source>
+- <translation>Invert Begin/End cut points</translation>
++ <translation>Invert Begin/End Cut Points</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="908"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="927"/>
+ <source>Jump to the next cut point</source>
+- <translation>Jump to the next cut point</translation>
++ <translation>Jump to the Next Cut Point</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="910"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="929"/>
+ <source>Jump to the previous cut point</source>
+- <translation>Jump to the previous cut point</translation>
++ <translation>Jump to the Previous Cut Point</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="912"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="931"/>
+ <source>Jump back 10x the normal amount</source>
+- <translation>Jump back 10x the normal amount</translation>
++ <translation>Jump Back 10x Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="914"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="933"/>
+ <source>Jump forward 10x the normal amount</source>
+- <translation>Jump forward 10x the normal amount</translation>
++ <translation>Jump Forward 10x Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="920"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="939"/>
+ <source>Next Page</source>
+ <translation>Next Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="922"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="941"/>
+ <source>Previous Page</source>
+ <translation>Previous Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="924"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="943"/>
+ <source>Next Subpage</source>
+ <translation>Next Subpage</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="926"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="945"/>
+ <source>Previous Subpage</source>
+ <translation>Previous Subpage</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="928"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="947"/>
+ <source>Toggle Teletext</source>
+ <translation>Toggle Teletext</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="938"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="957"/>
+ <source>Menu White</source>
+ <translation>Menu White</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="941"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="960"/>
+ <source>Toggle Background</source>
+ <translation>Toggle Background</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="942"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="961"/>
+ <source>Reveal hidden Text</source>
+- <translation>Reveal hidden Text</translation>
++ <translation>Reveal Hidden Text</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1238"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1176"/>
+ <source>Up Arrow</source>
+ <translation>Up Arrow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1240"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1178"/>
+ <source>Down Arrow</source>
+ <translation>Down Arrow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1242"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1180"/>
+ <source>Left Arrow</source>
+ <translation>Left Arrow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1244"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1182"/>
+ <source>Right Arrow</source>
+ <translation>Right Arrow</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1246"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1184"/>
+ <source>Move to next widget</source>
+- <translation>Move to next widget</translation>
++ <translation>Move to Next Widget</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1248"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1186"/>
+ <source>Move to preview widget</source>
+- <translation>Move to preview widget</translation>
++ <translation>Move to Preview Widget</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1250"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1188"/>
+ <source>Select</source>
+ <translation>Select</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1252"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1190"/>
+ <source>Backspace</source>
+ <translation>Backspace</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1254"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1192"/>
+ <source>Escape</source>
+ <translation>Escape</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1256"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1194"/>
+ <source>Pop-up menu</source>
+- <translation>Pop-up menu</translation>
++ <translation>Pop-up Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1258"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1196"/>
+ <source>More information</source>
+- <translation>More information</translation>
++ <translation>More Information</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1260"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1198"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1262"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1200"/>
+ <source>Edit</source>
+ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1264"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1202"/>
+ <source>Save screenshot</source>
+- <translation>Save screenshot</translation>
++ <translation>Save Screenshot</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1266"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1204"/>
+ <source>Play a media resource</source>
+- <translation>Play a media resource</translation>
++ <translation>Play a Media Resource</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1273"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1211"/>
+ <source>Page to top of list</source>
+- <translation>Page to top of list</translation>
++ <translation>Page to Top of List</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1275"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1213"/>
+ <source>Page to middle of list</source>
+- <translation>Page to middle of list</translation>
++ <translation>Page to Middle of List</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1277"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1215"/>
+ <source>Page to bottom of list</source>
+- <translation>Page to bottom of list</translation>
++ <translation>Page to Bottom of List</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1280"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1218"/>
+ <source>Previous View</source>
+ <translation>Previous View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1282"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1220"/>
+ <source>Next View</source>
+ <translation>Next View</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1285"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1223"/>
+ <source>Help</source>
+ <translation>Help</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1287"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1225"/>
+ <source>Eject Removable Media</source>
+ <translation>Eject Removable Media</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1290"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1228"/>
+ <source>Cut text from textedit</source>
+- <translation>Cut text from textedit</translation>
++ <translation>Cut Text from Textedit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1292"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1230"/>
+ <source>Copy text from textedit</source>
+- <translation>Copy text from textedit</translation>
++ <translation>Copy Text from Textedit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1294"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1232"/>
+ <source>Paste text into textedit</source>
+- <translation>Paste text into textedit</translation>
++ <translation>Paste Text Into Textedit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1296"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1234"/>
+ <source>Insert newline into textedit</source>
+- <translation>Insert newline into textedit</translation>
++ <translation>Insert Newline Into Textedit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1298"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1236"/>
+ <source>Undo</source>
+ <translation>Undo</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1300"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1238"/>
+ <source>Redo</source>
+ <translation>Redo</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1302"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1240"/>
+ <source>Show incremental search dialog</source>
+- <translation>Show incremental search dialog</translation>
++ <translation>Show Incremental Search Dialog</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1305"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1243"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1306"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1244"/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1307"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1245"/>
+ <source>2</source>
+ <translation>2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1308"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1246"/>
+ <source>3</source>
+ <translation>3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1309"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1247"/>
+ <source>4</source>
+ <translation>4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1310"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1248"/>
+ <source>5</source>
+ <translation>5</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1311"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1249"/>
+ <source>6</source>
+ <translation>6</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1312"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1250"/>
+ <source>7</source>
+ <translation>7</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1313"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1251"/>
+ <source>8</source>
+ <translation>8</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1314"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1252"/>
+ <source>9</source>
+ <translation>9</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1316"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1254"/>
+ <source>Turn the display on</source>
+- <translation>Turn the display on</translation>
++ <translation>Turn the Display On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1318"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1256"/>
+ <source>Turn the display off</source>
+- <translation>Turn the display off</translation>
++ <translation>Turn the Display Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1321"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1259"/>
+ <source>Trigger System Key Event #1</source>
+ <translation>Trigger System Key Event #1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1323"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1261"/>
+ <source>Trigger System Key Event #2</source>
+ <translation>Trigger System Key Event #2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1325"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1263"/>
+ <source>Trigger System Key Event #3</source>
+ <translation>Trigger System Key Event #3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1327"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1265"/>
+ <source>Trigger System Key Event #4</source>
+ <translation>Trigger System Key Event #4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1329"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1267"/>
+ <source>Trigger System Key Event #5</source>
+ <translation>Trigger System Key Event #5</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1331"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1269"/>
+ <source>Trigger System Key Event #6</source>
+ <translation>Trigger System Key Event #6</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1333"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1271"/>
+ <source>Trigger System Key Event #7</source>
+ <translation>Trigger System Key Event #7</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1335"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1273"/>
+ <source>Trigger System Key Event #8</source>
+ <translation>Trigger System Key Event #8</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1337"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1275"/>
+ <source>Trigger System Key Event #9</source>
+ <translation>Trigger System Key Event #9</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1339"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1277"/>
+ <source>Trigger System Key Event #10</source>
+ <translation>Trigger System Key Event #10</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1343"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1281"/>
+ <source>Zoom in on browser window</source>
+- <translation>Zoom in on browser window</translation>
++ <translation>Zoom In on Browser Window</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1345"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1283"/>
+ <source>Zoom out on browser window</source>
+- <translation>Zoom out on browser window</translation>
++ <translation>Zoom Out on Browser Window</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1347"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1285"/>
+ <source>Toggle where keyboard input goes to</source>
+- <translation>Toggle where keyboard input goes to</translation>
++ <translation>Toggle Where Keyboard Input Goes To</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1350"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1288"/>
+ <source>Move mouse pointer up</source>
+- <translation>Move mouse pointer up</translation>
++ <translation>Move Mouse Pointer Up</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1352"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1290"/>
+ <source>Move mouse pointer down</source>
+- <translation>Move mouse pointer down</translation>
++ <translation>Move Mouse Pointer Down</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1354"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1292"/>
+ <source>Move mouse pointer left</source>
+- <translation>Move mouse pointer left</translation>
++ <translation>Move Mouse Pointer Left</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1356"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1294"/>
+ <source>Move mouse pointer right</source>
+- <translation>Move mouse pointer right</translation>
++ <translation>Move Mouse Pointer Right</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1358"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1296"/>
+ <source>Mouse Left button click</source>
+- <translation>Mouse Left button click</translation>
++ <translation>Mouse Left Button Click</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1361"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1299"/>
+ <source>Scroll down half a page</source>
+- <translation>Scroll down half a page</translation>
++ <translation>Scroll Down Half Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1363"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1301"/>
+ <source>Scroll up half a page</source>
+- <translation>Scroll up half a page</translation>
++ <translation>Scroll Up Half Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1365"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1303"/>
+ <source>Scroll left half a page</source>
+- <translation>Scroll left half a page</translation>
++ <translation>Scroll Left Half Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1367"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1305"/>
+ <source>Scroll right half a page</source>
+- <translation>Scroll right half a page</translation>
++ <translation>Scroll Right Half Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1370"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1308"/>
+ <source>Move selection to next link</source>
+- <translation>Move selection to next link</translation>
++ <translation>Move Selection to Next Link</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1372"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1310"/>
+ <source>Move selection to previous link</source>
+- <translation>Move selection to previous link</translation>
++ <translation>Move Selection to Previous Link</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1374"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1312"/>
+ <source>Follow selected link</source>
+- <translation>Follow selected link</translation>
++ <translation>Follow Selected Link</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1376"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1314"/>
+ <source>Go back to previous page</source>
+- <translation>Go back to previous page</translation>
++ <translation>Go Back to Previous Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1378"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1316"/>
+ <source>Go forward to previous page</source>
+- <translation>Go forward to previous page</translation>
++ <translation>Go Forward to Previous Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1383"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1321"/>
+ <source>System Exit</source>
+ <translation>System Exit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1385"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1323"/>
+ <source>Enter Standby Mode</source>
+ <translation>Enter Standby Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythmainwindow.cpp" line="1381"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1325"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1327"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1329"/>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1331"/>
++ <source>Up to 16 Keys that allow Long Press</source>
++ <translation>Up to 16 Keys that allow Long Press</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythui/mythmainwindow.cpp" line="1319"/>
+ <source>Display System Exit Prompt</source>
+ <translation>Display System Exit Prompt</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1364"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1554"/>
+ <source>Reload Theme</source>
+ <translation>Reload Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1366"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1556"/>
+ <source>Main Menu</source>
+ <translation>Main Menu</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1368"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1558"/>
+ <source>Program Guide</source>
+ <translation>Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1370"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1560"/>
+ <source>Program Finder</source>
+ <translation>Program Finder</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1374"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1564"/>
+ <source>Manage Recordings / Fix Conflicts</source>
+ <translation>Manage Recordings / Fix Conflicts</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1376"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1566"/>
+ <source>Manage Recording Rules</source>
+ <translation>Manage Recording Rules</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1378"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1568"/>
+ <source>Channel Recording Priorities</source>
+ <translation>Channel Recording Priorities</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1380"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1570"/>
+ <source>TV Recording Playback</source>
+ <translation>TV Recording Playback</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1382"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1572"/>
+ <source>Live TV</source>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1384"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1574"/>
+ <source>Status Screen</source>
+ <translation>Status Screen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1386"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1576"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1389"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1579"/>
+ <source>Standby Mode</source>
+ <translation>Standby Mode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1394"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1584"/>
+ <source>The Video Default View</source>
+ <translation>The Video Default View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1396"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1586"/>
+ <source>The Video Manager</source>
+ <translation>The Video Manager</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1398"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1588"/>
+ <source>The Video Browser</source>
+ <translation>The Video Browser</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1400"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1590"/>
+ <source>The Video Listings</source>
+ <translation>The Video Listings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1402"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1592"/>
+ <source>The Video Gallery</source>
+ <translation>The Video Gallery</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1404"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1594"/>
+ <source>Play an Optical Disc</source>
+ <translation>Play an Optical Disc</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1409"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1599"/>
+ <source>Image Gallery</source>
+ <translation>Image Gallery</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1412"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1602"/>
+ <source>Toggle Show Widget Borders</source>
+ <translation>Toggle Show Widget Borders</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1414"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1604"/>
+ <source>Toggle Show Widget Names</source>
+ <translation>Toggle Show Widget Names</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1416"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1606"/>
+ <source>Reset All Keys</source>
+ <translation>Reset All Keys</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1417"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1607"/>
+ <source>Reset all keys to defaults</source>
+- <translation>Reset all keys to defaults</translation>
++ <translation>Reset All Keys to Defaults</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1446"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1636"/>
+ <source>Start/Stop Slideshow</source>
+ <translation>Start/Stop Slideshow</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1448"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1638"/>
+ <source>Start Recursive Slideshow</source>
+ <translation>Start Recursive Slideshow</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1450"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1640"/>
+ <source>Rotate image right 90 degrees</source>
+- <translation>Rotate image right 90 degrees</translation>
++ <translation>Rotate Image Right 90 Degrees</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1452"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1642"/>
+ <source>Rotate image left 90 degrees</source>
+- <translation>Rotate image left 90 degrees</translation>
++ <translation>Rotate Image Left 90 Degrees</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1454"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1644"/>
+ <source>Flip image horizontally</source>
+- <translation>Flip image horizontally</translation>
++ <translation>Flip Image Horizontally</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1456"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1646"/>
+ <source>Flip image vertically</source>
+- <translation>Flip image vertically</translation>
++ <translation>Flip Image Vertically</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1458"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1648"/>
+ <source>Zoom image out</source>
+- <translation>Zoom image out</translation>
++ <translation>Zoom Image Out</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1460"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1650"/>
+ <source>Zoom image in</source>
+- <translation>Zoom image in</translation>
++ <translation>Zoom Image In</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1462"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1652"/>
+ <source>Full-size (un-zoom) image</source>
+- <translation>Full-size (un-zoom) image</translation>
++ <translation>Fullsize (Un-zoom) Image</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1464"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1654"/>
+ <source>Mark image</source>
+- <translation>Mark image</translation>
++ <translation>Mark Image</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1466"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1656"/>
+ <source>Scroll image up</source>
+- <translation>Scroll image up</translation>
++ <translation>Scroll Image Up</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1468"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1658"/>
+ <source>Scroll image left</source>
+- <translation>Scroll image left</translation>
++ <translation>Scroll Image Left</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1470"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1660"/>
+ <source>Scroll image right</source>
+- <translation>Scroll image right</translation>
++ <translation>Scroll Image Right</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1472"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1662"/>
+ <source>Scroll image down</source>
+- <translation>Scroll image down</translation>
++ <translation>Scroll Image Down</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1474"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1664"/>
+ <source>Recenter image</source>
+- <translation>Recenter image</translation>
++ <translation>Recenter Image</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1530"/>
+- <source>MythTV&apos;s native media player.</source>
+- <translation>MythTV&apos;s native media player.</translation>
++ <location filename="../programs/mythfrontend/main.cpp" line="1666"/>
++ <source>Set or clear cover image</source>
++ <translation>Set or Clear Cover Image</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1535"/>
+- <source>MythDVD media</source>
+- <translation>MythDVD media</translation>
++ <location filename="../programs/mythfrontend/main.cpp" line="1722"/>
++ <source>MythTV&apos;s native media player.</source>
++ <translation>MythTV&apos;s Native Media Player</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1538"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1727"/>
+ <source>MythImage Media Handler 1/2</source>
+ <translation>MythImage Media Handler 1/2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1545"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1734"/>
+ <source>MythImage Media Handler 2/2</source>
+ <translation>MythImage Media Handler 2/2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="196"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="193"/>
+ <source>Modify Action</source>
+ <translation>Modify Action</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="209"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="206"/>
+ <source>Set Binding</source>
+ <translation>Set Binding</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="210"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="207"/>
+ <source>Remove Binding</source>
+ <translation>Remove Binding</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="221"/>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="256"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="218"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="253"/>
+ <source>Change View</source>
+ <translation>Change View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="234"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="231"/>
+ <source>Actions By Context</source>
+- <translation>Actions By Context</translation>
++ <translation>Actions by Context</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="235"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="232"/>
+ <source>Contexts By Key</source>
+- <translation>Contexts By Key</translation>
++ <translation>Contexts by Key</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="236"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="233"/>
+ <source>Keys By Context</source>
+ <translation>Keys By Context</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="242"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="239"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="255"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="252"/>
+ <source>Save</source>
+ <translation>Save</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="257"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="254"/>
+ <source>Reset All Keys to Defaults</source>
+ <translation>Reset All Keys to Defaults</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="607"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="599"/>
+ <source>This key binding conflicts with %1 in the %2 context. Unable to bind key.</source>
+ <translation>This key binding conflicts with %1 in the %2 context. Unable to bind key.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="611"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="603"/>
+ <source>This key binding conflicts with %1 in the %2 context. Do you want to bind it anyway?</source>
+ <translation>This key binding conflicts with %1 in the %2 context. Do you want to bind it anyway?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="574"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="566"/>
+ <source>This action is mandatory and needs at least one key bound to it. Instead, try rebinding with another key.</source>
+ <translation>This action is mandatory and needs at least one key bound to it. Instead, try rebinding with another key.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="265"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="262"/>
+ <source>Save changes?</source>
+ <translation>Save changes?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="733"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="725"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="732"/>
+ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="740"/>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="748"/>
+ <source>Contexts</source>
+ <translation>Contexts</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="734"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="726"/>
+ <source>Actions</source>
+ <translation>Actions</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="741"/>
+- <location filename="../programs/mythfrontend/mythcontrols.cpp" line="747"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="733"/>
++ <location filename="../programs/mythfrontend/mythcontrols.cpp" line="739"/>
+ <source>Keys</source>
+ <translation>Keys</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/main.cpp" line="37"/>
++ <location filename="../programs/mythwelcome/main.cpp" line="34"/>
+ <source>Open an Xterm window</source>
+- <translation>Open an Xterm window</translation>
++ <translation>Open Xterm Window</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/main.cpp" line="39"/>
++ <location filename="../programs/mythwelcome/main.cpp" line="36"/>
+ <source>Show Mythshutdown settings</source>
+- <translation>Show Mythshutdown settings</translation>
++ <translation>Show mythshutdown Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/main.cpp" line="41"/>
++ <location filename="../programs/mythwelcome/main.cpp" line="38"/>
+ <source>Start Mythtv-Setup</source>
+- <translation>Start Mythtv-Setup</translation>
++ <translation>Start mythtv-setup</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1430"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1620"/>
+ <source>Play selected item in alternate player</source>
+- <translation>Play selected item in alternate player</translation>
++ <translation>Play Selected Item in Alternate Player</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1432"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1622"/>
+ <source>Open video filter dialog</source>
+- <translation>Open video filter dialog</translation>
++ <translation>Open Video Filter Dialog</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1434"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1624"/>
+ <source>Increase Parental Level</source>
+ <translation>Increase Parental Level</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1436"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1626"/>
+ <source>Decrease Parental Level</source>
+ <translation>Decrease Parental Level</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1438"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1628"/>
+ <source>Show Incremental Search Dialog</source>
+ <translation>Show Incremental Search Dialog</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1440"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1630"/>
+ <source>Download metadata for current item</source>
+- <translation>Download metadata for current item</translation>
++ <translation>Download Metadata for Current Item</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1442"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1632"/>
+ <source>Display Item Detail Popup</source>
+ <translation>Display Item Detail Popup</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/main.cpp" line="1534"/>
++ <location filename="../programs/mythfrontend/main.cpp" line="1724"/>
+ <source>MythDVD DVD Media Handler</source>
+ <translation>MythDVD DVD Media Handler</translation>
+ </message>
+@@ -11700,20 +11657,20 @@
+ <context>
+ <name>MythCoreContext</name>
+ <message>
+- <location filename="../libs/libmythbase/mythcorecontext.cpp" line="237"/>
++ <location filename="../libs/libmythbase/mythcorecontext.cpp" line="243"/>
+ <source>This application is not compatible with the installed MythTV libraries. Please recompile after a make distclean</source>
+- <translation>This application is not compatible with the installed MythTV libraries. Please recompile after a make distclean</translation>
++ <translation>This application is not compatible with the installed MythTV libraries. Please recompile after a make distclean.</translation>
+ </message>
+ </context>
+ <context>
+ <name>MythDVDPlayer</name>
+ <message>
+- <location filename="../libs/libmythtv/DVD/mythdvdplayer.cpp" line="668"/>
++ <location filename="../libs/libmythtv/DVD/mythdvdplayer.cpp" line="675"/>
+ <source>DVD Menu Not Available</source>
+ <translation>DVD Menu Not Available</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/DVD/mythdvdplayer.cpp" line="709"/>
++ <location filename="../libs/libmythtv/DVD/mythdvdplayer.cpp" line="716"/>
+ <source>Angle %1</source>
+ <translation>Angle %1</translation>
+ </message>
+@@ -11721,184 +11678,187 @@
+ <context>
+ <name>MythPlayer</name>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="494"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="520"/>
+ <source>Failed to initialize video output</source>
+- <translation>Failed to initialize video output</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="582"/>
+- <source>Need to switch video renderer</source>
+- <translation>Need to switch video renderer</translation>
++ <translation>Failed to Initialize Video Output</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/mythplayer.cpp" line="603"/>
+ <source>Failed to reinitialize video output</source>
+- <translation>Failed to reinitialize video output</translation>
++ <translation>Failed to Reinitialize Video Output</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="948"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="979"/>
+ <source>Could not read first %1 bytes</source>
+- <translation>Could not read first %1 bytes</translation>
++ <translation>Could Not Read First %1 Bytes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="968"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="999"/>
+ <source>Could not find an A/V decoder</source>
+- <translation>Could not find an A/V decoder</translation>
++ <translation>Could Not Find a Decoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="977"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1008"/>
+ <source>Could not initialize A/V decoder</source>
+- <translation>Could not initialize A/V decoder</translation>
++ <translation>Could Not Initialize Decoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1002"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1032"/>
+ <source>Could not open decoder</source>
+- <translation>Could not open decoder</translation>
++ <translation>Could Not Open Decoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1391"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1419"/>
+ <source>TXT CAP</source>
+ <translation>TXT CAP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1411"/>
+ <location filename="../libs/libmythtv/mythplayer.cpp" line="1439"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1470"/>
+ <source>Text subtitles</source>
+- <translation>Text subtitles</translation>
++ <translation>Text Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1417"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1445"/>
+ <source>Off</source>
+ <translation>Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1442"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1473"/>
+ <source>TXT %1</source>
+ <translation>TXT %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1456"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1487"/>
+ <source>On</source>
+ <translation>On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1512"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1545"/>
+ <source>No captions</source>
+ <comment>CC/Teletext/Subtitle text not available</comment>
+- <translation>No captions</translation>
++ <translation>No Captions</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1621"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1654"/>
+ <source>Forced Subtitles On</source>
+ <translation>Forced Subtitles On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1622"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1655"/>
+ <source>Forced Subtitles Off</source>
+ <translation>Forced Subtitles Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1839"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="1905"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2188"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2291"/>
+ <source>Failed to initialize A/V Sync</source>
+- <translation>Failed to initialize A/V Sync</translation>
++ <translation>Failed to Initialize A/V Sync</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="1942"/>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2122"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2015"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2356"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2432"/>
+ <source>Serious error detected in Video Output</source>
+- <translation>Serious error detected in Video Output</translation>
++ <translation>Serious Error Detected in Video Output</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2200"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="2570"/>
+ <source>Video frame buffering failed too many times.</source>
+- <translation>Video frame buffering failed too many times.</translation>
++ <translation>Video Frame Buffering Failed Too Many Times</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2639"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3019"/>
+ <source>Error opening switch program buffer</source>
+- <translation>Error opening switch program buffer</translation>
++ <translation>Error Opening Switch Program Buffer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2664"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3044"/>
+ <source>Error opening switch program file</source>
+- <translation>Error opening switch program file</translation>
++ <translation>Error Opening Switch Program File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2791"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3182"/>
+ <source>Error opening jump program file buffer</source>
+- <translation>Error opening jump program file buffer</translation>
++ <translation>Error Opening Jump Program File Buffer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2801"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3192"/>
+ <source>Error opening jump program file</source>
+- <translation>Error opening jump program file</translation>
++ <translation>Error Opening Jump Program File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="2810"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3201"/>
+ <source>Error reopening video decoder</source>
+- <translation>Error reopening video decoder</translation>
++ <translation>Error Reopening Video Decoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="3044"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3441"/>
+ <source>Irrecoverable recorder error</source>
+- <translation>Irrecoverable recorder error</translation>
++ <translation>Irrecoverable Recorder Error</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="3134"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="3531"/>
+ <source>Not Flagged</source>
+ <extracomment>The commercials/adverts have not been flagged</extracomment>
+ <translation>Not Flagged</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4035"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4444"/>
+ <source>Searching</source>
+- <translation>Searching</translation>
++ <translation>Searching...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4106"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4524"/>
+ <source>No Seektable</source>
+ <translation>No Seektable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4136"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4554"/>
+ <source>Using previously auto-saved cuts</source>
+- <translation>Using previously auto-saved cuts</translation>
++ <translation>Using Previously Auto-saved Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4185"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4603"/>
+ <source>Paused</source>
+ <translation>Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4270"/>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4306"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4688"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4724"/>
+ <source>New cut added.</source>
+- <translation>New cut added.</translation>
++ <translation>New Cut Added</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4275"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4693"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4280"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4698"/>
+ <source>Undo Changes</source>
+ <translation>Undo Changes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4311"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4729"/>
+ <source>Undo - %1</source>
+ <extracomment>%1 is the undo message</extracomment>
+ <translation>Undo - %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="4317"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="4735"/>
+ <source>Redo - %1</source>
+ <extracomment>%1 is the redo message</extracomment>
+ <translation>Redo - %1</translation>
+ </message>
++ <message>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5310"/>
++ <source>%1 ms</source>
++ <translation>%1 ms</translation>
++ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5122"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5560"/>
+ <source>%n second(s)</source>
+ <translation>
+ <numerusform>%n second</numerusform>
+@@ -11906,42 +11866,42 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5126"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5564"/>
+ <source>Still Frame</source>
+ <translation>Still Frame</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5127"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5565"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5353"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5796"/>
+ <source>Error opening remote stream buffer</source>
+- <translation>Error opening remote stream buffer</translation>
++ <translation>Error Opening Remote Stream Buffer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5366"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5809"/>
+ <source>Error opening remote stream</source>
+- <translation>Error opening remote stream</translation>
++ <translation>Error Opening Remote Stream</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5532"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5978"/>
+ <source>Enabled Studio Levels</source>
+ <translation>Enabled Studio Levels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5533"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="5979"/>
+ <source>Disabled Studio Levels</source>
+ <translation>Disabled Studio Levels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5557"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="6003"/>
+ <source>Enabled Night Mode</source>
+ <translation>Enabled Night Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythplayer.cpp" line="5563"/>
++ <location filename="../libs/libmythtv/mythplayer.cpp" line="6009"/>
+ <source>Disabled Night Mode</source>
+ <translation>Disabled Night Mode</translation>
+ </message>
+@@ -11949,12 +11909,12 @@
+ <context>
+ <name>MythPopupBox</name>
+ <message>
+- <location filename="../libs/libmyth/mythdialogs.cpp" line="744"/>
++ <location filename="../libs/libmyth/mythdialogs.cpp" line="737"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythdialogs.cpp" line="745"/>
++ <location filename="../libs/libmyth/mythdialogs.cpp" line="738"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+@@ -11962,12 +11922,12 @@
+ <context>
+ <name>MythRAOPConnection</name>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythraopconnection.cpp" line="1500"/>
++ <location filename="../libs/libmythtv/AirPlay/mythraopconnection.cpp" line="1503"/>
+ <source>Failed to read key from: %1</source>
+- <translation>Failed to read key from: %1</translation>
++ <translation>Failed to Read Key From: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/AirPlay/mythraopconnection.cpp" line="1517"/>
++ <location filename="../libs/libmythtv/AirPlay/mythraopconnection.cpp" line="1520"/>
+ <source>Failed to load RSA private key.</source>
+ <translation>Failed to load RSA private key.</translation>
+ </message>
+@@ -12007,328 +11967,277 @@
+ <context>
+ <name>MythShutdownSettings</name>
+ <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="126"/>
+- <source>Command to Set Wakeup Time</source>
+- <translation>Command to Set Wakeup Time</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="128"/>
+- <source>Command to set the wakeup time in the BIOS. See the README file for more examples.</source>
+- <translation>Command to set the wakeup time in the BIOS. See the README file for more examples.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="136"/>
+- <source>Wakeup time format</source>
+- <translation>Wakeup time format</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="139"/>
+- <source>The format of the time string passed to the &apos;Set Wakeup Time Command&apos; as $time. See QT::QDateTime.toString() for details. Set to &apos;time_t&apos; for seconds since epoch (use time_t for nvram_wakeup).</source>
+- <translation>The format of the time string passed to the &apos;Set Wakeup Time Command&apos; as $time. See QT::QDateTime.toString() for details. Set to &apos;time_t&apos; for seconds since epoch (use time_t for nvram_wakeup).</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="150"/>
+- <source>nvram-wakeup Restart Command</source>
+- <translation>nvram-wakeup Restart Command</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="152"/>
+- <source>Command to run if your bios requires you to reboot to allow nvram-wakeup settings to take effect. Leave blank if your bios does not require a reboot. See the README file for more examples.</source>
+- <translation>Command to run if your bios requires you to reboot to allow nvram-wakeup settings to take effect. Leave blank if your bios does not require a reboot. See the README file for more examples.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="163"/>
+- <source>Command to reboot</source>
+- <translation>Command to reboot</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="165"/>
+- <source>Command to reboot computer.</source>
+- <translation>Command to reboot computer.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="172"/>
+- <source>Command to shutdown</source>
+- <translation>Command to shutdown</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="174"/>
+- <source>Command to shutdown computer.</source>
+- <translation>Command to shutdown computer.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="181"/>
+- <source>Command to run to start the Frontend</source>
+- <translation>Command to run to start the Frontend</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="184"/>
+- <source>Command to start mythfrontend.</source>
+- <translation>Command to start mythfrontend.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="191"/>
+- <source>Command to run Xterm</source>
+- <translation>Command to run Xterm</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="193"/>
+- <source>Command to start an Xterm. Can be disabled by leaving this setting blank.</source>
+- <translation>Command to start an Xterm. Can be disabled by leaving this setting blank.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="205"/>
++ <location filename="../programs/mythwelcome/welcomesettings.cpp" line="161"/>
+ <source>MythShutdown/MythWelcome Settings</source>
+ <translation>MythShutdown/MythWelcome Settings</translation>
+ </message>
+ </context>
+ <context>
++ <name>MythSortHelper</name>
++ <message>
++ <location filename="../libs/libmythbase/mythsorthelper.cpp" line="15"/>
++ <source>^(The |A |An )</source>
++ <comment>Regular Expression for what to ignore when sorting</comment>
++ <translation>^(The |A |An)</translation>
++ </message>
++</context>
++<context>
+ <name>MythSystemEventEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="377"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="385"/>
+ <source>System Event Command Editor</source>
+ <translation>System Event Command Editor</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="383"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="391"/>
+ <source>Recording pending</source>
+- <translation>Recording pending</translation>
++ <translation>Recording Pending</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="385"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="393"/>
++ <source>Recording about to fail</source>
++ <translation>Recording About to Fail</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="395"/>
+ <source>Recording failing</source>
+- <translation>Recording failing</translation>
++ <translation>Recording Failing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="387"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="397"/>
+ <source>Recording started</source>
+- <translation>Recording started</translation>
++ <translation>Recording Started</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="389"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="399"/>
+ <source>Recording started writing</source>
+- <translation>Recording started writing</translation>
++ <translation>Recording Started Writing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="391"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="401"/>
+ <source>Recording finished</source>
+- <translation>Recording finished</translation>
++ <translation>Recording Finished</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="393"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="403"/>
+ <source>Recording deleted</source>
+- <translation>Recording deleted</translation>
++ <translation>Recording Deleted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="395"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="405"/>
+ <source>Recording expired</source>
+- <translation>Recording expired</translation>
++ <translation>Recording Expired</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="397"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="407"/>
+ <source>LiveTV started</source>
+- <translation>LiveTV started</translation>
++ <translation>LiveTV Started</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="399"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="409"/>
+ <source>LiveTV ended</source>
+- <translation>LiveTV ended</translation>
++ <translation>LiveTV Ended</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="401"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="411"/>
+ <source>Playback started</source>
+- <translation>Playback started</translation>
++ <translation>Playback Started</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="403"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="413"/>
+ <source>Playback stopped</source>
+- <translation>Playback stopped</translation>
++ <translation>Playback Stopped</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="405"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="415"/>
+ <source>Playback paused</source>
+- <translation>Playback paused</translation>
++ <translation>Playback Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="407"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="417"/>
+ <source>Playback unpaused</source>
+- <translation>Playback unpaused</translation>
++ <translation>Playback Unpaused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="409"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="419"/>
+ <source>Playback program changed</source>
+- <translation>Playback program changed</translation>
++ <translation>Playback Program Changed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="411"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="421"/>
+ <source>Tuning signal waiting</source>
+- <translation>Tuning signal waiting</translation>
++ <translation>Tuning Signal Waiting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="413"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="423"/>
+ <source>Master backend started</source>
+- <translation>Master backend started</translation>
++ <translation>Master Backend Started</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="415"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="425"/>
+ <source>Master backend shutdown</source>
+- <translation>Master backend shutdown</translation>
++ <translation>Master Backend Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="417"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="427"/>
+ <source>Client connected to master backend</source>
+- <translation>Client connected to master backend</translation>
++ <translation>Client Connected to Master Backend</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="419"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="429"/>
+ <source>Client disconnected from master backend</source>
+- <translation>Client disconnected from master backend</translation>
++ <translation>Client Disconnected from Master Backend</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="421"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="431"/>
+ <source>Slave backend connected to master</source>
+- <translation>Slave backend connected to master</translation>
++ <translation>Slave Backend Connected to Master</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="423"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="433"/>
+ <source>Slave backend disconnected from master</source>
+- <translation>Slave backend disconnected from master</translation>
++ <translation>Slave Backend Disconnected from Master</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="425"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="435"/>
+ <source>Network Control client connected</source>
+- <translation>Network Control client connected</translation>
++ <translation>Network Control Client Connected</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="427"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="437"/>
+ <source>Network Control client disconnected</source>
+- <translation>Network Control client disconnected</translation>
++ <translation>Network Control Client Disconnected</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="429"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="439"/>
+ <source>mythfilldatabase ran</source>
+- <translation>mythfilldatabase ran</translation>
++ <translation>mythfilldatabase Ran</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="431"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="441"/>
+ <source>Scheduler ran</source>
+- <translation>Scheduler ran</translation>
++ <translation>Scheduler Ran</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="433"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="443"/>
+ <source>Settings cache cleared</source>
+- <translation>Settings cache cleared</translation>
++ <translation>Settings Cache Cleared</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="435"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="445"/>
+ <source>Screen created or destroyed</source>
+- <translation>Screen created or destroyed</translation>
++ <translation>Screen Created or Destroyed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="437"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="447"/>
+ <source>Keystroke event #1</source>
+- <translation>Keystroke event #1</translation>
++ <translation>Keystroke Event #1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="439"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="449"/>
+ <source>Keystroke event #2</source>
+- <translation>Keystroke event #2</translation>
++ <translation>Keystroke Event #2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="441"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="451"/>
+ <source>Keystroke event #3</source>
+- <translation>Keystroke event #3</translation>
++ <translation>Keystroke Event #3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="443"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="453"/>
+ <source>Keystroke event #4</source>
+- <translation>Keystroke event #4</translation>
++ <translation>Keystroke Event #4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="445"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="455"/>
+ <source>Keystroke event #5</source>
+- <translation>Keystroke event #5</translation>
++ <translation>Keystroke Event #5</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="447"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="457"/>
+ <source>Keystroke event #6</source>
+- <translation>Keystroke event #6</translation>
++ <translation>Keystroke Event #6</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="449"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="459"/>
+ <source>Keystroke event #7</source>
+- <translation>Keystroke event #7</translation>
++ <translation>Keystroke Event #7</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="451"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="461"/>
+ <source>Keystroke event #8</source>
+- <translation>Keystroke event #8</translation>
++ <translation>Keystroke Event #8</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="453"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="463"/>
+ <source>Keystroke event #9</source>
+- <translation>Keystroke event #9</translation>
++ <translation>Keystroke Event #9</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="455"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="465"/>
+ <source>Keystroke event #10</source>
+- <translation>Keystroke event #10</translation>
++ <translation>Keystroke Event #10</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="457"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="467"/>
+ <source>CEC command received</source>
+- <translation>CEC command received</translation>
++ <translation>CEC Command Received</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/mythsystemevent.cpp" line="459"/>
++ <location filename="../libs/libmythtv/mythsystemevent.cpp" line="469"/>
+ <source>Any event</source>
+- <translation>Any event</translation>
++ <translation>Any Event</translation>
+ </message>
+ </context>
+ <context>
+ <name>MythTerminal</name>
+ <message>
+- <location filename="../libs/libmyth/mythterminal.cpp" line="158"/>
++ <location filename="../libs/libmyth/mythterminal.cpp" line="135"/>
++ <source>*** Crashed with status: %1 ***</source>
++ <translation>*** Crashed with Status: %1 ***</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmyth/mythterminal.cpp" line="137"/>
+ <source>*** Exited with status: %1 ***</source>
+- <translation>*** Exited with status: %1 ***</translation>
++ <translation>*** Exited with Status: %1 ***</translation>
+ </message>
+ </context>
+ <context>
+ <name>MythThemedMenu</name>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="311"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="313"/>
+ <source>System Menu</source>
+ <translation>System Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="322"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="324"/>
+ <source>Enter standby mode</source>
+- <translation>Enter standby mode</translation>
++ <translation>Standby</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="326"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="328"/>
+ <source>Exit application</source>
+- <translation>Exit application</translation>
++ <translation>Exit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="333"/>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="342"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="335"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="344"/>
+ <source>Shutdown</source>
+ <translation>Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="337"/>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="343"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="339"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="345"/>
+ <source>Reboot</source>
+ <translation>Reboot</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="351"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="353"/>
+ <source>About</source>
+ <translation>About</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="366"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="368"/>
+ <source>Revision: %1
+ Branch: %2
+ %3</source>
+@@ -12337,22 +12246,22 @@
+ %3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="377"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="379"/>
+ <source>Ok</source>
+- <translation>Ok</translation>
++ <translation>OK</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="609"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="611"/>
+ <source>MythTV could not locate the menu file %1</source>
+- <translation>MythTV could not locate the menu file %1</translation>
++ <translation>MythTV Could Not Locate the Menu File %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="626"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="628"/>
+ <source>The menu file %1 is incomplete.</source>
+ <translation>The menu file %1 is incomplete.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/myththemedmenu.cpp" line="943"/>
++ <location filename="../libs/libmythui/myththemedmenu.cpp" line="951"/>
+ <source>Enter password:</source>
+ <translation>Enter password:</translation>
+ </message>
+@@ -12376,13 +12285,13 @@
+ <context>
+ <name>MythUIFileBrowser</name>
+ <message>
+- <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="498"/>
+- <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="671"/>
++ <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="490"/>
++ <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="663"/>
+ <source>Parent</source>
+ <translation>Parent</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="641"/>
++ <location filename="../libs/libmythui/mythuifilebrowser.cpp" line="633"/>
+ <source>Parent Directory</source>
+ <translation>Parent Directory</translation>
+ </message>
+@@ -12390,8 +12299,8 @@
+ <context>
+ <name>MythUISearchDialog</name>
+ <message numerus="yes">
+- <location filename="../libs/libmythui/mythdialogbox.cpp" line="798"/>
+- <location filename="../libs/libmythui/mythdialogbox.cpp" line="859"/>
++ <location filename="../libs/libmythui/mythdialogbox.cpp" line="925"/>
++ <location filename="../libs/libmythui/mythdialogbox.cpp" line="986"/>
+ <source>%n match(es)</source>
+ <translation>
+ <numerusform>%n match</numerusform>
+@@ -12402,76 +12311,76 @@
+ <context>
+ <name>MythUIWebBrowser</name>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1193"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1186"/>
+ <source>Zoom: %1%</source>
+ <translation>Zoom: %1%</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1537"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1531"/>
+ <source>Sending key presses to web page</source>
+- <translation>Sending key presses to web page</translation>
++ <translation>Sending Key Presses to Web Page</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1539"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="1533"/>
+ <source>Sending key presses to MythTV</source>
+- <translation>Sending key presses to MythTV</translation>
++ <translation>Sending Key Presses to MythTV</translation>
+ </message>
+ </context>
+ <context>
+ <name>MythWebPage</name>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="314"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="313"/>
+ <source>Error loading page: %1</source>
+- <translation>Error loading page: %1</translation>
++ <translation>Error Loading Page: %1</translation>
+ </message>
+ </context>
+ <context>
+ <name>MythWebView</name>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="546"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="545"/>
+ <source>Enter filename to save file</source>
+- <translation>Enter filename to save file</translation>
++ <translation>Enter filename:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="566"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="565"/>
+ <source>Downloading file. Please wait...</source>
+ <translation>Downloading file. Please wait...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="579"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="578"/>
+ <source>Downloading...</source>
+ <translation>Downloading...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="616"/>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="708"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="615"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="707"/>
+ <source>Play the file</source>
+- <translation>Play the file</translation>
++ <translation>Play the File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="639"/>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="713"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="638"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="712"/>
+ <source>Download the file</source>
+- <translation>Download the file</translation>
++ <translation>Download the File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="643"/>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="711"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="642"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="710"/>
+ <source>Download and play the file</source>
+- <translation>Download and play the file</translation>
++ <translation>Download and Play the File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="675"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="674"/>
+ <source>ERROR downloading file.</source>
+- <translation>ERROR downloading file.</translation>
++ <translation>Error Downloading File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="693"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="692"/>
+ <source>What do you want to do with this file?</source>
+ <translation>What do you want to do with this file?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="714"/>
++ <location filename="../libs/libmythui/mythuiwebbrowser.cpp" line="713"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+@@ -12479,70 +12388,10 @@
+ <context>
+ <name>MythWelcomeSettings</name>
+ <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="14"/>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="34"/>
+- <source>Period %1 start time</source>
+- <translation>Period %1 start time</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="15"/>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="35"/>
+- <source>Period %1 start time. Defines a period the master backend should be awake. Set both Start &amp; End times to 00:00 to disable.</source>
+- <translation>Period %1 start time. Defines a period the master backend should be awake. Set both Start &amp; End times to 00:00 to disable.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="24"/>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="44"/>
+- <source>Period %1 end time</source>
+- <translation>Period %1 end time</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="25"/>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="45"/>
+- <source>Period %1 end time. Defines a period the master backend should be awake. Set both Start &amp; End times to 00:00 to disable.</source>
+- <translation>Period %1 end time. Defines a period the master backend should be awake. Set both Start &amp; End times to 00:00 to disable.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="54"/>
+- <source>Automatically Start mythfrontend</source>
+- <translation>Automatically Start mythfrontend</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="56"/>
+- <source>Mythwelcome will automatically start mythfrontend if it is determined that it was not started to record a program.</source>
+- <translation>Mythwelcome will automatically start mythfrontend if it is determined that it was not started to record a program.</translation>
+- </message>
+- <message>
+ <location filename="../programs/mythwelcome/welcomesettings.cpp" line="65"/>
+- <source>Shutdown with Master Backend</source>
+- <translation>Shutdown with Master Backend</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="67"/>
+- <source>Mythwelcome will automatically shutdown this computer when the master backend shuts down. Should only be set on frontend only machines</source>
+- <translation>Mythwelcome will automatically shutdown this computer when the master backend shuts down. Should only be set on frontend only machines</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="76"/>
+- <source>Date Format</source>
+- <translation>Date Format</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="78"/>
+- <source>This is the format to use to display the date. See http://doc.trolltech.com/3.3/qdate.html#toString for a list of valid format specifiers.</source>
+- <translation>This is the format to use to display the date. See http://doc.trolltech.com/3.3/qdate.html#toString for a list of valid format specifiers.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="94"/>
+ <source>MythWelcome Settings</source>
+ <translation>MythWelcome Settings</translation>
+ </message>
+- <message>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="96"/>
+- <location filename="../programs/mythwelcome/welcomesettings.cpp" line="101"/>
+- <source>Daily Wakeup/ShutDown Period %1</source>
+- <translation>Daily Wakeup/ShutDown Period %1</translation>
+- </message>
+ </context>
+ <context>
+ <name>MythWizard</name>
+@@ -12570,7 +12419,7 @@
+ <context>
+ <name>NetworkControl</name>
+ <message>
+- <location filename="../programs/mythfrontend/networkcontrol.cpp" line="1505"/>
++ <location filename="../programs/mythfrontend/networkcontrol.cpp" line="1511"/>
+ <source>Network Control</source>
+ <translation>Network Control</translation>
+ </message>
+@@ -12578,87 +12427,87 @@
+ <context>
+ <name>OSDSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1484"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1482"/>
+ <source>Decode VBI format</source>
+- <translation>Decode VBI format</translation>
++ <translation>Decode VBI Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1486"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1484"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1488"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1486"/>
+ <source>PAL teletext</source>
+- <translation>PAL teletext</translation>
++ <translation>PAL Teletext</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1490"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1488"/>
+ <source>NTSC closed caption</source>
+- <translation>NTSC closed caption</translation>
++ <translation>NTSC Closed Caption</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1494"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1492"/>
+ <source>If enabled, this overrides the mythtv-setup setting used during recording when decoding captions.</source>
+ <translation>If enabled, this overrides the mythtv-setup setting used during recording when decoding captions.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1504"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1503"/>
+ <source>Subtitle Codec</source>
+ <translation>Subtitle Codec</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1589"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1588"/>
+ <source>Always display closed captioning or subtitles</source>
+- <translation>Always display closed captioning or subtitles</translation>
++ <translation>Always Display Closed Captioning or Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1594"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1593"/>
+ <source>If enabled, captions will be displayed when playing back recordings or watching Live TV. Closed Captioning can be turned on or off by pressing &quot;T&quot; duringplayback.</source>
+ <translation>If enabled, captions will be displayed when playing back recordings or watching Live TV. Closed Captioning can be turned on or off by pressing &quot;T&quot; duringplayback.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1606"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1605"/>
+ <source>Enable interactive TV</source>
+- <translation>Enable interactive TV</translation>
++ <translation>Enable Interactive TV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1610"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1609"/>
+ <source>If enabled, interactive TV applications (MHEG) will be activated. This is used for teletext and logos for radio and channels that are currently off-air.</source>
+ <translation>If enabled, interactive TV applications (MHEG) will be activated. This is used for teletext and logos for radio and channels that are currently off-air.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1620"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1619"/>
+ <source>Enable network access for interactive TV</source>
+- <translation>Enable network access for interactive TV</translation>
++ <translation>Enable Network Access for Interactive TV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1622"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1621"/>
+ <source>If enabled, interactive TV applications (MHEG) will be able to access interactive content over the Internet. This is used for BBC iPlayer.</source>
+ <translation>If enabled, interactive TV applications (MHEG) will be able to access interactive content over the Internet. This is used, amongst others, for BBC iPlayer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1633"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1632"/>
+ <source>Always use browse mode in Live TV</source>
+- <translation>Always use browse mode in Live TV</translation>
++ <translation>Always Use Browse Mode in Live TV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1637"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1636"/>
+ <source>If enabled, browse mode will automatically be activated whenever you use channel up/down while watching Live TV.</source>
+ <translation>If enabled, browse mode will automatically be activated whenever you use channel up/down while watching Live TV.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1648"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1647"/>
+ <source>Browse all channels</source>
+- <translation>Browse all channels</translation>
++ <translation>Browse All Channels</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1652"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1651"/>
+ <source>If enabled, browse mode will show channels on all available recording devices, instead of showing channels on just the current recorder.</source>
+ <translation>If enabled, browse mode will show channels on all available recording devices, instead of showing channels on just the current recorder.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4065"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4344"/>
+ <source>On-screen Display</source>
+ <translation>On-screen Display</translation>
+ </message>
+@@ -12666,52 +12515,52 @@
+ <context>
+ <name>Orientation</name>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="231"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="239"/>
+ <source>File: %1, Db: %2</source>
+ <translation>File: %1, Db: %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="245"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="253"/>
+ <source>1 (Normal)</source>
+ <translation>1 (Normal)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="246"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="254"/>
+ <source>2 (H Mirror)</source>
+ <translation>2 (H Mirror)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="247"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="255"/>
+ <source>3 (Rotate 180°)</source>
+ <translation>3 (Rotate 180°)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="248"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="256"/>
+ <source>4 (V Mirror)</source>
+ <translation>4 (V Mirror)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="249"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="257"/>
+ <source>5 (H Mirror, Rot 270°)</source>
+ <translation>5 (H Mirror, Rot 270°)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="250"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="258"/>
+ <source>6 (Rotate 90°)</source>
+ <translation>6 (Rotate 90°)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="251"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="259"/>
+ <source>7 (H Mirror, Rot 90°)</source>
+ <translation>7 (H Mirror, Rot 90°)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="252"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="260"/>
+ <source>8 (Rotate 270°)</source>
+ <translation>8 (Rotate 270°)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="253"/>
++ <location filename="../libs/libmythmetadata/imagemetadata.cpp" line="261"/>
+ <source>%1 (Undefined)</source>
+ <translation>%1 (Undefined)</translation>
+ </message>
+@@ -12719,7 +12568,7 @@
+ <context>
+ <name>PaneATSC</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/paneatsc.h" line="42"/>
++ <location filename="../libs/libmythtv/channelscan/paneatsc.h" line="38"/>
+ <source>Scanning Range</source>
+ <translation>Scanning Range</translation>
+ </message>
+@@ -12727,12 +12576,12 @@
+ <context>
+ <name>PaneDVBUtilsImport</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/panedvbutilsimport.h" line="49"/>
++ <location filename="../libs/libmythtv/channelscan/panedvbutilsimport.h" line="48"/>
+ <source>File location</source>
+- <translation>File location</translation>
++ <translation>File Location</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/panedvbutilsimport.h" line="50"/>
++ <location filename="../libs/libmythtv/channelscan/panedvbutilsimport.h" line="49"/>
+ <source>Location of the channels.conf file.</source>
+ <translation>Location of the channels.conf file.</translation>
+ </message>
+@@ -12804,65 +12653,65 @@
+ <context>
+ <name>PlayGroupConfig</name>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="55"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="42"/>
+ <source>Title match (regex)</source>
+- <translation>Title match (regex)</translation>
++ <translation>Title Match (regex)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="56"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="43"/>
+ <source>Automatically set new recording rules to use this group if the title matches this regular expression. For example, &quot;(News|CNN)&quot; would match any title in which &quot;News&quot; or &quot;CNN&quot; appears.</source>
+ <translation>Automatically set new recording rules to use this group if the title matches this regular expression. For example, &quot;(News|CNN)&quot; would match any title in which &quot;News&quot; or &quot;CNN&quot; appears.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="69"/>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="82"/>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="95"/>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="110"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="57"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="71"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="84"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="99"/>
+ <source>(default)</source>
+ <translation>(default)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="72"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="60"/>
+ <source>Skip ahead (seconds)</source>
+- <translation>Skip ahead (seconds)</translation>
++ <translation>Skip Ahead (seconds)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="73"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="61"/>
+ <source>How many seconds to skip forward on a fast forward.</source>
+ <translation>How many seconds to skip forward on a fast forward.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="85"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="73"/>
+ <source>Skip back (seconds)</source>
+- <translation>Skip back (seconds)</translation>
++ <translation>Skip Back (seconds)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="86"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="74"/>
+ <source>How many seconds to skip backward on a rewind.</source>
+ <translation>How many seconds to skip backward on a rewind.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="98"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="86"/>
+ <source>Jump amount (minutes)</source>
+- <translation>Jump amount (minutes)</translation>
++ <translation>Jump Amount (minutes)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="99"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="87"/>
+ <source>How many minutes to jump forward or backward when the jump keys are pressed.</source>
+ <translation>How many minutes to jump forward or backward when the jump keys are pressed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="114"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="102"/>
+ <source>Time stretch (speed x 100)</source>
+- <translation>Time stretch (speed x 100)</translation>
++ <translation>Time Stretch (speed x 100)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="115"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="103"/>
+ <source>Initial playback speed with adjusted audio. Use 100 for normal speed, 50 for half speed and 200 for double speed.</source>
+ <translation>Initial playback speed with adjusted audio. Use 100 for normal speed, 50 for half speed and 200 for double speed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="147"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="131"/>
+ <source>%1 Group</source>
+ <comment>Play Group</comment>
+ <extracomment>%1 is the name of the playgroup</extracomment>
+@@ -12872,631 +12721,617 @@
+ <context>
+ <name>PlayGroupEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="236"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="270"/>
+ <source>Playback Groups</source>
+ <translation>Playback Groups</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="249"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="271"/>
+ <source>Create New Playback Group</source>
+ <translation>Create New Playback Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="250"/>
+- <source>Enter group name or press SELECT to enter text via the On Screen Keyboard</source>
+- <translation>Enter group name or press SELECT to enter text via the On Screen Keyboard</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="283"/>
+- <source>Delete playback group:
+-&apos;%1&apos;?</source>
+- <translation>Delete playback group:
+-&apos;%1&apos;?</translation>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="281"/>
++ <source>Enter new group name</source>
++ <translation>Enter group name:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="288"/>
+- <source>Yes, delete group</source>
+- <translation>Yes, delete group</translation>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="297"/>
++ <source>Sorry, this Playback Group name cannot be blank.</source>
++ <translation>Sorry, the name cannot be blank.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="289"/>
+- <source>No, Don&apos;t delete group</source>
+- <translation>No, Don&apos;t delete group</translation>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="315"/>
++ <source>Sorry, this Playback Group name is already in use.</source>
++ <translation>Sorry, this name is already in use.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="312"/>
++ <location filename="../libs/libmythtv/playgroup.cpp" line="326"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythtv/playgroup.cpp" line="321"/>
+- <source>(Create new group)</source>
+- <translation>(Create new group)</translation>
+- </message>
+ </context>
+ <context>
+ <name>PlaybackBox</name>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="413"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="411"/>
+ <source>Watch List</source>
+ <translation>Watch List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="590"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4485"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="595"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4528"/>
+ <source>Groups</source>
+ <translation>Groups</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="591"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="596"/>
+ <source>Recordings</source>
+ <translation>Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="635"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="640"/>
+ <source>Password for group &apos;%1&apos;:</source>
+ <translation>Password for group &apos;%1&apos;:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="734"/>
+- <source>, which consume %1</source>
+- <translation>, which consume %1</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="735"/>
+- <source>GB</source>
+- <comment>GigaBytes</comment>
+- <translation>GB</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1453"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1469"/>
+ <source>There are no recordings in your current view</source>
+- <translation>There are no recordings in your current view</translation>
++ <translation>There are No Recordings in the Current View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1452"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1468"/>
+ <source>There are no recordings available</source>
+- <translation>There are no recordings available</translation>
++ <translation>There are No Recordings Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1680"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1739"/>
+ <source>_NO_TITLE_</source>
+ <translation>_NO_TITLE_</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1692"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4537"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4539"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4543"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4554"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1684"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4580"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4582"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4586"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4597"/>
+ <source>Unknown</source>
+ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2438"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2478"/>
+ <source>Change Group Filter</source>
+ <translation>Change Group Filter</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2441"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2481"/>
+ <source>Change Group View</source>
+ <translation>Change Group View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2445"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2485"/>
+ <source>Change Group Password</source>
+ <translation>Change Group Password</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2456"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2496"/>
+ <source>Add this Group to Playlist</source>
+- <translation>Add this Group to Playlist</translation>
++ <translation>Add This Group to Playlist</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2461"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2501"/>
+ <source>Add this recording to Playlist</source>
+- <translation>Add this recording to Playlist</translation>
++ <translation>Add This Recording to Playlist</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2466"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2506"/>
+ <source>Help (Status Icons)</source>
+ <translation>Help (Status Icons)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2588"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2631"/>
+ <source>Are you sure you want to delete:</source>
+ <translation>Are you sure you want to delete:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2590"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2633"/>
+ <source>Recording file does not exist.
+ Are you sure you want to delete:</source>
+ <translation>Recording file does not exist.
+ Are you sure you want to delete:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2594"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2637"/>
+ <source>Are you sure you want to stop:</source>
+ <translation>Are you sure you want to stop:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2623"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2666"/>
+ <source>Yes, and allow re-record</source>
+- <translation>Yes, and allow re-record</translation>
++ <translation>Delete and Allow Re-record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2631"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2635"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2674"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2678"/>
+ <source>Yes, delete it</source>
+- <translation>Yes, delete it</translation>
++ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2639"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2682"/>
+ <source>Yes, stop recording</source>
+- <translation>Yes, stop recording</translation>
++ <translation>Stop Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2653"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2696"/>
+ <source>Yes, delete it and the remaining %1 list items</source>
+- <translation>Yes, delete it and the remaining %1 list items</translation>
++ <translation>Delete Recording and the Remaining %1 List Items</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2663"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2706"/>
+ <source>No, keep it</source>
+- <translation>No, keep it</translation>
++ <translation>Keep</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2667"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2710"/>
+ <source>No, continue recording</source>
+- <translation>No, continue recording</translation>
++ <translation>Continue Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2675"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2718"/>
+ <source>No, and keep the remaining %1 list items</source>
+- <translation>No, and keep the remaining %1 list items</translation>
++ <translation>Keep the Remaining %1 List Items</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2695"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2702"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2738"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2745"/>
+ <source>Recording Available
+ </source>
+ <translation>Recording Available
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2352"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2697"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2392"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2740"/>
+ <source>This recording is currently in use by:</source>
+ <translation>This recording is currently in use by:</translation>
+ </message>
+- <message numerus="yes">
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="710"/>
+- <source>There is/are %n recording(s) in this display group</source>
+- <translatorcomment>Used to have singular/plural problem.</translatorcomment>
+- <translation>
+- <numerusform>There is %n recording in this display group</numerusform>
+- <numerusform>There are %n recordings in this display group</numerusform>
+- </translation>
+- </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1308"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1316"/>
+ <source>%1% used, %2 GB free</source>
+ <comment>Diskspace</comment>
+ <translation>%1% used, %2 GB free</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="1715"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2123"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2124"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3586"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3588"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4508"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4717"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="1754"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2156"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2157"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3630"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3632"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4551"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4758"/>
+ <source>Live TV</source>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2332"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2347"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2372"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2387"/>
+ <source>This recording is already being deleted</source>
+- <translation>This recording is already being deleted</translation>
++ <translation>This Recording is Already Being Deleted</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2450"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3190"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3234"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2490"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3236"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3280"/>
+ <source>Playlist Options</source>
+ <translation>Playlist Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2704"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2747"/>
+ <source>This recording is currently Available</source>
+- <translation>This recording is currently Available</translation>
++ <translation>This Recording is Currently Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2709"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2715"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2721"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2727"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2733"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2752"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2758"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2764"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2770"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2776"/>
+ <source>Recording Unavailable
+ </source>
+ <translation>Recording Unavailable
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2711"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2754"/>
+ <source>This recording is currently being deleted and is unavailable</source>
+- <translation>This recording is currently being deleted and is unavailable</translation>
++ <translation>This Recording is Currently Being Deleted and is Unavailable</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2717"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2760"/>
+ <source>This recording has been deleted and is unavailable</source>
+- <translation>This recording has been deleted and is unavailable</translation>
++ <translation>This Recording Has Been Deleted and is Unavailable</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2723"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2766"/>
+ <source>The file for this recording can not be found</source>
+- <translation>The file for this recording can not be found</translation>
++ <translation>The File for This Recording Can Not Be Found</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2729"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2772"/>
+ <source>The file for this recording is empty.</source>
+- <translation>The file for this recording is empty.</translation>
++ <translation>The File for This Recording is Empty</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2735"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2778"/>
+ <source>This recording is not yet available.</source>
+- <translation>This recording is not yet available.</translation>
++ <translation>This Recording is Not Yet Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2747"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3220"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2790"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3266"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2748"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2791"/>
+ <source>Shuffle Play</source>
+ <translation>Shuffle Play</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2749"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2792"/>
+ <source>Clear Playlist</source>
+ <translation>Clear Playlist</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2754"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2797"/>
+ <source>Toggle playlist for this Category/Title</source>
+- <translation>Toggle playlist for this Category/Title</translation>
++ <translation>Toggle Playlist for This Category/Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2757"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2800"/>
+ <source>Toggle playlist for this Group</source>
+- <translation>Toggle playlist for this Group</translation>
++ <translation>Toggle Playlist for This Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2761"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2804"/>
+ <source>Toggle playlist for this recording</source>
+- <translation>Toggle playlist for this recording</translation>
++ <translation>Toggle Playlist for This Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2764"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2992"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3251"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2807"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3039"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3299"/>
+ <source>Storage Options</source>
+ <translation>Storage Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2765"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3036"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3253"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2808"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3083"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3301"/>
+ <source>Job Options</source>
+ <translation>Job Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2766"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3201"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3272"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2809"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3247"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3320"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2767"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2810"/>
+ <source>Delete, and allow re-record</source>
+- <translation>Delete, and allow re-record</translation>
++ <translation>Delete, and Allow Re-record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2780"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2999"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2823"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3046"/>
+ <source>Change Recording Group</source>
+ <translation>Change Recording Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2781"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3000"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2824"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3047"/>
+ <source>Change Playback Group</source>
+ <translation>Change Playback Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2782"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2994"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2825"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3041"/>
+ <source>Disable Auto Expire</source>
+ <translation>Disable Auto Expire</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2783"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2994"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2826"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3041"/>
+ <source>Enable Auto Expire</source>
+ <translation>Enable Auto Expire</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2850"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3066"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2892"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3112"/>
+ <source>Begin Transcoding</source>
+ <translation>Begin Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2852"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3066"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2894"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3112"/>
+ <source>Stop Transcoding</source>
+ <translation>Stop Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2860"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3068"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2902"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3114"/>
+ <source>Begin Metadata Lookup</source>
+ <translation>Begin Metadata Lookup</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2862"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3068"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2904"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3114"/>
+ <source>Stop Metadata Lookup</source>
+ <translation>Stop Metadata Lookup</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2870"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2883"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2896"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2909"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3098"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2912"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2925"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2938"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2951"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3144"/>
+ <source>Begin</source>
+ <translation>Begin</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2873"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2886"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2899"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2912"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3097"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2915"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2928"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2941"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2954"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3143"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2742"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2775"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2793"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2785"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2818"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2836"/>
+ <source>There is %n item(s) in the playlist. Actions affect all items in the playlist</source>
+ <translation>
+- <numerusform>There is %n item in the playlist. Actions affect all items in the playlist</numerusform>
+- <numerusform>There are %n items in the playlist. Actions affect all items in the playlist</numerusform>
++ <numerusform>There is %n item in the playlist. Actions affect all items in the playlist.</numerusform>
++ <numerusform>There are %n items in the playlist. Actions affect all items in the playlist.</numerusform>
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2786"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2829"/>
+ <source>Allow Re-record</source>
+ <translation>Allow Re-record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2972"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3014"/>
+ <source>Play Options</source>
+ <translation>Play Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2977"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3019"/>
+ <source>Play from bookmark</source>
+- <translation>Play from bookmark</translation>
++ <translation>Play from Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2978"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3025"/>
+ <source>Play from beginning</source>
+- <translation>Play from beginning</translation>
++ <translation>Play from Beginning</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2980"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3022"/>
+ <source>Play from last played position</source>
+- <translation>Play from last played position</translation>
++ <translation>Play from Last Played Position</translation>
++ </message>
++ <message numerus="yes">
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="739"/>
++ <source>There is/are %n recording(s) in this display group, which consume(s) %1 GiB.</source>
++ <translation>
++ <numerusform>There is %n recording in this display group, which consumes %1 GiB.</numerusform>
++ <numerusform>There are %n recordings in this display group, which consume %1 GiB.</numerusform>
++ </translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="745"/>
++ <source>There is no recording in this display group.</source>
++ <translation>There Are No Recordings in This Display Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2996"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3028"/>
++ <source>Clear bookmark</source>
++ <translation>Clear Bookmark</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3043"/>
+ <source>Do not preserve this episode</source>
+- <translation>Do not preserve this episode</translation>
++ <translation>Do Not Preserve This Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2996"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3043"/>
+ <source>Preserve this episode</source>
+- <translation>Preserve this episode</translation>
++ <translation>Preserve This Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3013"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3060"/>
+ <source>Scheduling Options</source>
+ <translation>Scheduling Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3017"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3064"/>
+ <source>Edit Recording Schedule</source>
+ <translation>Edit Recording Schedule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3025"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3072"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3096"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3142"/>
+ <source>User Job</source>
+ <translation>User Job</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3115"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3161"/>
+ <source>Transcoding profiles</source>
+- <translation>Transcoding profiles</translation>
++ <translation>Transcoding Profiles</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3119"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4506"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4715"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4758"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4987"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3165"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4549"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4756"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4799"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5028"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3120"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3166"/>
+ <source>Autodetect</source>
+ <translation>Autodetect</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3143"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3189"/>
+ <source>High Quality</source>
+ <translation>High Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3145"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3191"/>
+ <source>Medium Quality</source>
+ <translation>Medium Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3147"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3193"/>
+ <source>Low Quality</source>
+ <translation>Low Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3174"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3220"/>
+ <source>Recording file cannot be found</source>
+- <translation>Recording file cannot be found</translation>
++ <translation>Recording File Cannot Be Found</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3176"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3222"/>
+ <source>Recording file contains no data</source>
+- <translation>Recording file contains no data</translation>
++ <translation>Recording File Contains No Data</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3177"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3192"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3252"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3223"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3238"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3300"/>
+ <source>Recording Options</source>
+ <translation>Recording Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3195"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3256"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3241"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3304"/>
+ <source>List Recorded Episodes</source>
+ <translation>List Recorded Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3198"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3259"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3244"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3307"/>
+ <source>List All Recordings</source>
+ <translation>List All Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3218"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3264"/>
+ <source>Play from...</source>
+- <translation>Play from...</translation>
++ <translation>Play From...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3185"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3227"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3231"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3273"/>
+ <source>Remove from Playlist</source>
+ <translation>Remove from Playlist</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2331"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2346"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2351"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2371"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2386"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2391"/>
+ <source>Cannot delete
+ </source>
+- <translation>Cannot delete
++ <translation>Cannot Delete
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2432"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2472"/>
+ <source>Group List Menu</source>
+ <translation>Group List Menu</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2855"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3067"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2897"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3113"/>
+ <source>Begin Commercial Detection</source>
+ <translation>Begin Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2857"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3067"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2899"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3113"/>
+ <source>Stop Commercial Detection</source>
+ <translation>Stop Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3019"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3066"/>
+ <source>Allow this episode to re-record</source>
+- <translation>Allow this episode to re-record</translation>
++ <translation>Allow This Episode to Re-record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3021"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3068"/>
+ <source>Show Recording Details</source>
+ <translation>Show Recording Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3023"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3070"/>
+ <source>Change Recording Metadata</source>
+ <translation>Change Recording Metadata</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3187"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3230"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3233"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3276"/>
+ <source>Add to Playlist</source>
+ <translation>Add to Playlist</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3243"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3291"/>
+ <source>Stop Recording</source>
+ <translation>Stop Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2785"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3247"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2828"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3295"/>
+ <source>Mark as Unwatched</source>
+ <translation>Mark as Unwatched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="2784"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3249"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="2827"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3297"/>
+ <source>Mark as Watched</source>
+ <translation>Mark as Watched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3267"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3315"/>
+ <source>Undelete</source>
+ <translation>Undelete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="3268"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="3316"/>
+ <source>Delete Forever</source>
+ <translation>Delete Forever</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4507"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4719"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4550"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4760"/>
+ <source>Deleted</source>
+ <translation>Deleted</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4510"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4517"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4545"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4556"/>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4721"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4553"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4560"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4588"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4599"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4762"/>
+ <source>%1 [%n item(s)]</source>
+ <translation>
+ <numerusform>%1 [%n item]</numerusform>
+@@ -13504,32 +13339,32 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4564"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4607"/>
+ <source>Categories</source>
+ <translation>Categories</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4574"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4617"/>
+ <source>Change Filter</source>
+ <translation>Change Filter</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4703"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4744"/>
+ <source>Add New</source>
+ <translation>Add New</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4725"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4766"/>
+ <source>Select Recording Group</source>
+ <translation>Select Recording Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4769"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4810"/>
+ <source>Select Playback Group</source>
+ <translation>Select Playback Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="4920"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="4961"/>
+ <source>New Recording Group</source>
+ <translation>New Recording Group</translation>
+ </message>
+@@ -13537,18 +13372,12 @@
+ <context>
+ <name>PlaybackProfileConfig</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="953"/>
+- <source>&amp;</source>
+- <comment>and</comment>
+- <translation>&amp;</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="956"/>
+- <source>if rez</source>
+- <translation>if rez</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1167"/>
++ <source>Mark for deletion</source>
++ <translation>Mark for Deletion</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1032"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1168"/>
+ <source>Add New Entry</source>
+ <translation>Add New Entry</translation>
+ </message>
+@@ -13556,723 +13385,873 @@
+ <context>
+ <name>PlaybackProfileConfigs</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1188"/>
+- <source>Playback Profiles %1</source>
+- <translation>Playback Profiles %1</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1267"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1299"/>
+ <source>Current Video Playback Profile</source>
+ <translation>Current Video Playback Profile</translation>
+ </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1278"/>
+- <source>Add New</source>
+- <translation>Add New</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1317"/>
+- <source>Enter Playback Group Name</source>
+- <translation>Enter Playback Group Name</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1328"/>
+- <source>Sorry, playback group
+-name cannot be blank.</source>
+- <translation>Sorry, playback group
+-name cannot be blank.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1329"/>
+- <source>Sorry, playback group name
+-&apos;%1&apos; is already being used.</source>
+- <translation>Sorry, playback group name
+-&apos;%1&apos; is already being used.</translation>
+- </message>
+ </context>
+ <context>
+ <name>PlaybackProfileItemConfig</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="680"/>
+- <source>W</source>
+- <comment>Width</comment>
+- <translation>W</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="682"/>
+- <source>H</source>
+- <comment>Height</comment>
+- <translation>H</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="694"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="752"/>
+ <source>Decoder</source>
+ <translation>Decoder</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="695"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="753"/>
+ <source>Max CPUs</source>
+ <translation>Max CPUs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="705"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="763"/>
+ <source>Maximum number of CPU cores used for video decoding and filtering.</source>
+ <translation>Maximum number of CPU cores used for video decoding and filtering.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="707"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="765"/>
+ <source> Multithreaded decoding disabled-only one CPU will be used, please recompile with --enable-ffmpeg-pthreads to enable.</source>
+ <translation> Multithreaded decoding disabled-only one CPU will be used, please recompile with --enable-ffmpeg-pthreads to enable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="716"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="774"/>
+ <source>Disabling will significantly reduce the load on the CPU when watching HD H.264 but may significantly reduce video quality.</source>
+ <translation>Disabling will significantly reduce the load on the CPU when watching HD H.264 but may significantly reduce video quality.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="720"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="778"/>
+ <source>When unchecked the OSD will not fade away but instead will disappear abruptly.</source>
+ <translation>When unchecked the OSD will not fade away but instead will disappear abruptly.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="722"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="780"/>
+ <source>Uncheck this if the video studders while the OSD is fading away.</source>
+ <translation>Uncheck this if the video studders while the OSD is fading away.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="696"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="754"/>
+ <source>Deblocking filter</source>
+- <translation>Deblocking filter</translation>
++ <translation>Deblocking Filter</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="737"/>
++ <source>Video Formats</source>
++ <translation>Video Formats</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="743"/>
++ <source>Optional setting to restrict this profile to a video format or formats. You can also type in a format or several formats separated by space. To find the format for a video use ffprobe and look at the word after &quot;Video:&quot;. Also you can get a complete list of available formats with ffmpeg -codecs.</source>
++ <translation>Optional setting to restrict this profile to a video format or formats. You can also type in a format or several formats separated by space. To find the format for a video use ffprobe and look at the word after &quot;Video:&quot;. Also you can get a complete list of available formats with ffmpeg -codecs.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="749"/>
++ <source>Frame Rate Range</source>
++ <translation>Frame Rate Range</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="726"/>
++ <source> Valid formats for the setting are [nnnn - nnnn], [&gt; nnnn], [&gt;= nnnn], [&lt; nnnn], [&lt;= nnnn]. Also [nnnn] for an exact match. You can also use more than 1 expression with &amp; between.</source>
++ <translation>Valid formats are [nnnn - nnnn], [&gt; nnnn], [&gt;= nnnn], [&lt; nnnn], [&lt;= nnnn]. Also [nnnn] for an exact match. You can also use more than 1 expression with &amp; between.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="730"/>
++ <source>Numbers can have up to 3 decimal places.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="731"/>
++ <source>Width Range</source>
++ <translation>Width Range</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="732"/>
++ <source>Optional setting to restrict this profile to videos with a selected width range. </source>
++ <translation>Optional setting to restrict this profile to videos with a selected width range.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="734"/>
++ <source>Height Range</source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="650"/>
+- <source>Profile Item</source>
+- <translation>Profile Item</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="735"/>
++ <source>Optional setting to restrict this profile to videos with a selected height range. </source>
++ <translation>Optional setting to restrict this profile to videos with a selected height range.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="678"/>
+- <source>Match criteria</source>
+- <translation>Match criteria</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="750"/>
++ <source>Optional setting to restrict this profile to a range of frame rates. </source>
++ <translation>Optional setting to restrict this profile to a range of frame rates.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="697"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="755"/>
+ <source>Video renderer</source>
+- <translation>Video renderer</translation>
++ <translation>Video Renderer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="698"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="756"/>
+ <source>OSD renderer</source>
+- <translation>OSD renderer</translation>
++ <translation>OSD Renderer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="699"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="757"/>
+ <source>OSD fade</source>
+- <translation>OSD fade</translation>
++ <translation>OSD Fade</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="700"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="758"/>
+ <source>Primary deinterlacer</source>
+- <translation>Primary deinterlacer</translation>
++ <translation>Primary Deinterlacer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="701"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="759"/>
+ <source>Fallback deinterlacer</source>
+- <translation>Fallback deinterlacer</translation>
++ <translation>Fallback Deinterlacer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="702"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="760"/>
+ <source>Custom filters</source>
+- <translation>Custom filters</translation>
++ <translation>Custom Filters</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="712"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="770"/>
+ <source>Example custom filter list: &apos;ivtc,denoise3d&apos;</source>
+- <translation>Example custom filter list: &apos;ivtc,denoise3d&apos;</translation>
++ <translation>Example Custom Filter List: &apos;ivtc,denoise3d&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="715"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="773"/>
+ <source>When unchecked the deblocking loopfilter will be disabled </source>
+- <translation>When unchecked the deblocking loopfilter will be disabled </translation>
++ <translation>When unchecked the deblocking loopfilter will be disabled.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="950"/>
++ <source>Invalid width specification(%1), discarded</source>
++ <translation>Invalid Width (%1), Discarded</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="964"/>
++ <source>Invalid height specification(%1), discarded</source>
++ <translation>Invalid Height (%1), Discarded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="920"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="978"/>
++ <source>Invalid frame rate specification(%1), discarded</source>
++ <translation>Invalid Frame Rate Specification(%1), Discarded</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1057"/>
+ <source>Main deinterlacing method. %1</source>
+- <translation>Main deinterlacing method. %1</translation>
++ <translation>Main Deinterlacing Method. %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="927"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1064"/>
+ <source>Fallback deinterlacing method. %1</source>
+- <translation>Fallback deinterlacing method. %1</translation>
++ <translation>Fallback Deinterlacing Method. %1</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1089"/>
++ <source>Remove this profile item?</source>
++ <translation>Remove this profile item?</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1134"/>
++ <source>&amp;</source>
++ <comment>and</comment>
++ <translation>&amp;</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1139"/>
++ <source>width</source>
++ <comment>video formats</comment>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1142"/>
++ <source>height</source>
++ <comment>video formats</comment>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1146"/>
++ <source>formats</source>
++ <comment>video formats</comment>
++ <translation>formats</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1149"/>
++ <source>framerate</source>
++ <translation>framerate</translation>
+ </message>
+ </context>
+ <context>
+ <name>PlaybackSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="52"/>
+- <source>Extra audio buffering</source>
+- <translation>Extra audio buffering</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="59"/>
++ <source>Audio read ahead (ms)</source>
++ <translation>Audio Read Ahead (ms)</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="63"/>
++ <source>Increase this value if audio cuts out frequently. This is more likely to occur when adjusting audio sync to a negative value. If using high negative audio sync values you may need to set a large value here. Default is 100.</source>
++ <translation>Increase this value if audio cuts out frequently. This is more likely to occur when adjusting audio sync to a negative value. If using high negative audio sync values you may need to set a large value here. Default is 100.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="94"/>
++ <source>Enable new timestamp based playback speed (AVSync2)</source>
++ <translation>Enable New Timestamp Based Playback Speed (AVSync2)</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="96"/>
++ <source>Simplified timing and synchronization method. This may offer smoother video playback. Note there is a setting that can be used for fine tuning playback (press right arrow).</source>
++ <translation>Simplified timing and synchronization method. This may offer smoother video playback. Note there is a setting that can be used for fine tuning playback (press right arrow).</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="109"/>
++ <source>AVSync2 audio correction (ms)</source>
++ <translation>AVSync2 Audio Correction (ms)</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="113"/>
++ <source>When using AVSync2, if video playback is speeding up and slowing down every few seconds, reduce this value. For quicker recovery of audio sync after jumps, increase this value. Values can be from 1 to 40. Default is 10.</source>
++ <translation>When using AVSync2, if video playback is speeding up and slowing down every few seconds, reduce this value. For quicker recovery of audio sync after jumps, increase this value. Values can be from 1 to 40. Default is 10.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="124"/>
++ <source>Extra stage of OpenGL Shading</source>
++ <translation>Extra Stage of OpenGL Shading</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="56"/>
+- <source>Enable this setting if MythTV is playing &quot;crackly&quot; audio. This setting affects digital tuners (QAM/DVB/ATSC) and hardware encoders. It will have no effect on framegrabbers (MPEG-4/RTJPEG). MythTV will keep extra audio data in its internal buffers to workaround this bug.</source>
+- <translation>Enable this setting if MythTV is playing &quot;crackly&quot; audio. This setting affects digital tuners (QAM/DVB/ATSC) and hardware encoders. It will have no effect on framegrabbers (MPEG-4/RTJPEG). MythTV will keep extra audio data in its internal buffers to workaround this bug.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="126"/>
++ <source>This may be needed if video is blank or distorted. In particular, it may be needed on Fire TV 4K. This may cause slowdown or dropped frames. By default this is disabled. </source>
++ <translatorcomment>This may be needed if video is blank or distorted. In particular, it may be needed on Fire TV 4K. This may cause slowdown or dropped frames. By default this is disabled.</translatorcomment>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="73"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="139"/>
+ <source>Use FFmpeg&apos;s original MPEG-TS demuxer</source>
+- <translation>Use FFmpeg&apos;s original MPEG-TS demuxer</translation>
++ <translation>Use FFmpeg&apos;s Original MPEG-TS Demuxer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="77"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="143"/>
+ <source>Experimental: Enable this setting to use FFmpeg&apos;s native demuxer. Things will be broken.</source>
+ <translation>Experimental: Enable this setting to use FFmpeg&apos;s native demuxer. Things will be broken.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="88"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="154"/>
+ <source>PIP video location</source>
+- <translation>PIP video location</translation>
++ <translation>PIP Video Location</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="93"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="159"/>
+ <source>Location of PIP Video window.</source>
+ <translation>Location of PIP Video window.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="102"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="168"/>
+ <source>Default group filter to apply</source>
+- <translation>Default group filter to apply</translation>
++ <translation>Default Group Filter to Apply</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="105"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="171"/>
+ <source>All Programs</source>
+ <translation>All Programs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="135"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="201"/>
+ <source>Default group filter to apply on the View Recordings screen.</source>
+ <translation>Default group filter to apply on the View Recordings screen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="144"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="210"/>
+ <source>Always prompt for initial group filter</source>
+- <translation>Always prompt for initial group filter</translation>
++ <translation>Always Prompt for Initial Group Filter</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="149"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="215"/>
+ <source>If enabled, always prompt the user for the initial filter to apply when entering the Watch Recordings screen.</source>
+ <translation>If enabled, always prompt the user for the initial filter to apply when entering the Watch Recordings screen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="160"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="226"/>
+ <source>Save current group filter when changed</source>
+- <translation>Save current group filter when changed</translation>
++ <translation>Save Current Group Filter When Changed</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="165"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="231"/>
+ <source>If enabled, remember the last selected filter instead of displaying the default filter whenever you enter the playback screen.</source>
+ <translation>If enabled, remember the last selected filter instead of displaying the default filter whenever you enter the playback screen.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="177"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="243"/>
++ <source>Change Recording Group using the arrow keys</source>
++ <translation>Change Recording Group Using the Arrow Keys</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="248"/>
++ <source>If enabled, change recording group directly using the arrow keys instead of having to use &lt; and &gt;. Requires theme support for this feature.</source>
++ <translation>If enabled, change recording group directly using the arrow keys instead of having to use &lt; and &gt;. Requires theme support.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="261"/>
+ <source>Start in group list</source>
+- <translation>Start in group list</translation>
++ <translation>Start in Group List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="181"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="265"/>
+ <source>If enabled, the focus will start on the group list, otherwise the focus will default to the recordings.</source>
+ <translation>If enabled, the focus will start on the group list, otherwise the focus will default to the recordings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="191"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="275"/>
+ <source>Smart fast forwarding</source>
+- <translation>Smart fast forwarding</translation>
++ <translation>Smart Fast Forwarding</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="195"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="279"/>
+ <source>If enabled, then immediately after rewinding, only skip forward the same amount as skipping backwards.</source>
+ <translation>If enabled, then immediately after rewinding, only skip forward the same amount as skipping backwards.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="237"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="321"/>
+ <source>Automatically skip commercials</source>
+- <translation>Automatically skip commercials</translation>
++ <translation>Automatically Skip Commercials</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="240"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="324"/>
+ <source>Notify, but do not skip</source>
+ <comment>Skip commercials</comment>
+- <translation>Notify, but do not skip</translation>
++ <translation>Notify, but Do Not Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="242"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="326"/>
+ <source>Automatically Skip</source>
+ <comment>Skip commercials</comment>
+ <translation>Automatically Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="245"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="329"/>
+ <source>Automatically skip commercial breaks that have been flagged during automatic commercial detection or by the mythcommflag program, or just notify that a commercial has been detected.</source>
+ <translation>Automatically skip commercial breaks that have been flagged during automatic commercial detection or by the mythcommflag program, or just notify that a commercial has been detected.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="372"/>
+ <source>Commercial skip automatic rewind amount (secs)</source>
+- <translation>Commercial skip automatic rewind amount (secs)</translation>
++ <translation>Commercial Skip Automatic Rewind Amount (seconds)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="291"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="375"/>
+ <source>MythTV will automatically rewind this many seconds after performing a commercial skip.</source>
+ <translation>MythTV will automatically rewind this many seconds after performing a commercial skip.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="304"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="388"/>
+ <source>Commercial skip notify amount (secs)</source>
+- <translation>Commercial skip notify amount (secs)</translation>
++ <translation>Commercial Skip Notify Amount (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="306"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="390"/>
+ <source>MythTV will act like a commercial begins this many seconds early. This can be useful when commercial notification is used in place of automatic skipping.</source>
+ <translation>MythTV will act like a commercial begins this many seconds early. This can be useful when commercial notification is used in place of automatic skipping.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="321"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="405"/>
+ <source>Maximum commercial skip (secs)</source>
+- <translation>Maximum commercial skip (secs)</translation>
++ <translation>Maximum Commercial Skip (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="323"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="407"/>
+ <source>MythTV will discourage long manual commercial skips. Skips which are longer than this will require the user to hit the SKIP key twice. Automatic commercial skipping is not affected by this limit.</source>
+ <translation>MythTV will discourage long manual commercial skips. Skips which are longer than this will require the user to hit the SKIP key twice. Automatic commercial skipping is not affected by this limit.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="339"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="423"/>
+ <source>Merge short commercial breaks (secs)</source>
+- <translation>Merge short commercial breaks (secs)</translation>
++ <translation>Merge Short Commercial Breaks (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="341"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="425"/>
+ <source>Treat consecutive commercial breaks shorter than this as one break when skipping forward. Useful if you have to skip a few times during breaks. Applies to automatic skipping as well. Set to 0 to disable.</source>
+ <translation>Treat consecutive commercial breaks shorter than this as one break when skipping forward. Useful if you have to skip a few times during breaks. Applies to automatic skipping as well. Set to 0 to disable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1375"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1326"/>
++ <source>Enter Playback Profile Name</source>
++ <translation>Enter Playback Profile name:</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1352"/>
++ <source>Sorry, playback group
++name cannot be blank.</source>
++ <translation>Sorry, group name cannot be blank.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1353"/>
++ <source>Sorry, playback group name
++&apos;%1&apos; is already being used.</source>
++ <translation>Sorry, group name &apos;%1&apos; is already used.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1372"/>
+ <source>Sort all sub-titles/multi-titles Ascending</source>
+- <translation>Sort all sub-titles/multi-titles Ascending</translation>
++ <translation>Sort All Sub-titles/Multi-titles Ascending</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1376"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1373"/>
+ <source>Sort all sub-titles/multi-titles Descending</source>
+- <translation>Sort all sub-titles/multi-titles Descending</translation>
++ <translation>Sort All Sub-titles/Multi-titles Descending</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1377"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1374"/>
+ <source>Sort sub-titles Descending, multi-titles Ascending</source>
+- <translation>Sort sub-titles Descending, multi-titles Ascending</translation>
++ <translation>Sort Sub-titles Descending, Multi-titles Ascending</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1379"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1376"/>
+ <source>Sort sub-titles Ascending, multi-titles Descending</source>
+- <translation>Sort sub-titles Ascending, multi-titles Descending</translation>
++ <translation>Sort Sub-titles Ascending, Multi-titles Descending</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1382"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1379"/>
+ <source>Selects how to sort show episodes. Sub-titles refers to the episodes listed under a specific show title. Multi-title refers to sections (e.g. &quot;All Programs&quot;) which list multiple titles. Sections in parentheses are not affected.</source>
+ <translation>Selects how to sort show episodes. Sub-titles refers to the episodes listed under a specific show title. Multi-title refers to sections (e.g. &quot;All Programs&quot;) which list multiple titles. Sections in parentheses are not affected.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1392"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1389"/>
+ <source>Episode sort orderings</source>
+- <translation>Episode sort orderings</translation>
++ <translation>Episode Sort Orderings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1407"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1404"/>
+ <source>Sort episodes</source>
+- <translation>Sort episodes</translation>
++ <translation>Sort Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1409"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1406"/>
+ <source>Record date</source>
+- <translation>Record date</translation>
++ <translation>Record Date</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1410"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1407"/>
+ <source>Season/Episode</source>
+ <translation>Season/Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1411"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1408"/>
+ <source>Original air date</source>
+- <translation>Original air date</translation>
++ <translation>Original Air Date</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1412"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1409"/>
+ <source>Program ID</source>
+ <translation>Program ID</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1414"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1411"/>
+ <source>Selects how to sort a show&apos;s episodes</source>
+- <translation>Selects how to sort a show&apos;s episodes</translation>
++ <translation>Selects How to Sort a Show&apos;s Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1424"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1421"/>
+ <source>Fast forward/rewind reposition amount</source>
+- <translation>Fast forward/rewind reposition amount</translation>
++ <translation>Fast Forward/Rewind Reposition Amount</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1428"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1425"/>
+ <source>When exiting sticky keys fast forward/rewind mode, reposition this many 1/100th seconds before resuming normal playback. This compensates for the reaction time between seeing where to resume playback and actually exiting seeking.</source>
+ <translation>When exiting sticky keys fast forward/rewind mode, reposition this many 1/100th seconds before resuming normal playback. This compensates for the reaction time between seeing where to resume playback and actually exiting seeking.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1443"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1440"/>
+ <source>Reverse direction in fast forward/rewind</source>
+- <translation>Reverse direction in fast forward/rewind</translation>
++ <translation>Reverse Direction in Fast Forward/Rewind</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1448"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1445"/>
+ <source>If enabled, pressing the sticky rewind key in fast forward mode switches to rewind mode, and vice versa. If disabled, it will decrease the current speed or switch to play mode if the speed can&apos;t be decreased further.</source>
+ <translation>If enabled, pressing the sticky rewind key in fast forward mode switches to rewind mode, and vice versa. If disabled, it will decrease the current speed or switch to play mode if the speed can&apos;t be decreased further.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1533"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1532"/>
+ <source>Vertical scaling</source>
+- <translation>Vertical scaling</translation>
++ <translation>Vertical Scaling</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1537"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1536"/>
+ <source>Adjust this if the image does not fill your screen vertically. Range -100% to 100%</source>
+ <translation>Adjust this if the image does not fill your screen vertically. Range -100% to 100%</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1547"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1546"/>
+ <source>Horizontal scaling</source>
+- <translation>Horizontal scaling</translation>
++ <translation>Horizontal Scaling</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1551"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1550"/>
+ <source>Adjust this if the image does not fill your screen horizontally. Range -100% to 100%</source>
+ <translation>Adjust this if the image does not fill your screen horizontally. Range -100% to 100%</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1561"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1560"/>
+ <source>Scan displacement (X)</source>
+- <translation>Scan displacement (X)</translation>
++ <translation>Scan Displacement (X)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1565"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1564"/>
+ <source>Adjust this to move the image horizontally.</source>
+ <translation>Adjust this to move the image horizontally.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1575"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1574"/>
+ <source>Scan displacement (Y)</source>
+- <translation>Scan displacement (Y)</translation>
++ <translation>Scan Displacement (Y)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1579"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1578"/>
+ <source>Adjust this to move the image vertically.</source>
+ <translation>Adjust this to move the image vertically.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1663"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1662"/>
+ <source>Clear bookmark on playback</source>
+- <translation>Clear bookmark on playback</translation>
++ <translation>Clear Bookmark on Playback</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1667"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1666"/>
+ <source>If enabled, automatically clear the bookmark on a recording when the recording is played back. If disabled, you can mark the beginning with rewind then save position.</source>
+ <translation>If enabled, automatically clear the bookmark on a recording when the recording is played back. If disabled, you can mark the beginning with rewind then save position.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1680"/>
+- <source>Alternate clear and save bookmark</source>
+- <translation>Alternate clear and save bookmark</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1679"/>
++ <source>Playback from start of program</source>
++ <translation>Playback from Start of Program</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1684"/>
+- <source>During playback the SELECT key (Enter or Space) will alternate between &quot;Bookmark Saved&quot; and &quot;Bookmark Cleared&quot;. If disabled, the SELECT key will save the current position for each keypress.</source>
+- <translation>During playback the SELECT key (Enter or Space) will alternate between &quot;Bookmark Saved&quot; and &quot;Bookmark Cleared&quot;. If disabled, the SELECT key will save the current position for each keypress.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1683"/>
++ <source>If enabled and no bookmark is set, playback starts at the program scheduled start time rather than the beginning of the recording. Useful for automatically skipping &apos;start early&apos; parts of a recording.</source>
++ <translation>If enabled and no bookmark is set, playback starts at the program scheduled start time rather than the beginning of the recording. Useful for automatically skipping &apos;start early&apos; parts of a recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1697"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1696"/>
+ <source>Action on playback exit</source>
+- <translation>Action on playback exit</translation>
++ <translation>Action on Playback Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1699"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1698"/>
+ <source>Just exit</source>
+- <translation>Just exit</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1700"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1699"/>
+ <source>Save position and exit</source>
+- <translation>Save position and exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1701"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1700"/>
+ <source>Always prompt (excluding Live TV)</source>
+- <translation>Always prompt (excluding Live TV)</translation>
++ <translation>Always Prompt (excluding Live TV)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1703"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1702"/>
+ <source>Always prompt (including Live TV)</source>
+- <translation>Always prompt (including Live TV)</translation>
++ <translation>Always Prompt (including Live TV)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1705"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1704"/>
+ <source>Prompt for Live TV only</source>
+- <translation>Prompt for Live TV only</translation>
++ <translation>Prompt for Live TV Only</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1707"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1706"/>
+ <source>If set to prompt, a menu will be displayed when you exit playback mode. The options available will allow you to save your position, delete the recording, or continue watching.</source>
+ <translation>If set to prompt, a menu will be displayed when you exit playback mode. The options available will allow you to save your position, delete the recording, or continue watching.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1720"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1719"/>
+ <source>Prompt at end of recording</source>
+- <translation>Prompt at end of recording</translation>
++ <translation>Prompt At End of Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1724"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1723"/>
+ <source>If enabled, a menu will be displayed allowing you to delete the recording when it has finished playing.</source>
+ <translation>If enabled, a menu will be displayed allowing you to delete the recording when it has finished playing.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1734"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1733"/>
++ <source>Enable Music Choice</source>
++ <translation>Enable Music Choice</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1737"/>
++ <source>Enable this to improve playing of Music Choice channels or recordings from those channels. These are audio channels with slide show from some cable providers. In unusual situations this could cause lip sync problems watching normal videos or TV shows.</source>
++ <translation>Enable this to improve playing of Music Choice channels or recordings from those channels. These are audio channels with slide show from some cable providers. In unusual situations this could cause lip sync problems watching normal videos or TV shows.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1750"/>
+ <source>Jump to program OSD</source>
+- <translation>Jump to program OSD</translation>
++ <translation>Jump to Program OSD</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1738"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1754"/>
+ <source>Set the choice between viewing the current recording group in the OSD, or showing the &apos;Watch Recording&apos; screen when &apos;Jump to Program&apos; is activated. If enabled, the recordings are shown in the OSD</source>
+ <translation>Set the choice between viewing the current recording group in the OSD, or showing the &apos;Watch Recording&apos; screen when &apos;Jump to Program&apos; is activated. If enabled, the recordings are shown in the OSD</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1751"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1767"/>
+ <source>Continue playback when embedded</source>
+- <translation>Continue playback when embedded</translation>
++ <translation>Continue Playback When Embedded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1755"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1771"/>
+ <source>If enabled, TV playback continues when the TV window is embedded in the upcoming program list or recorded list. The default is to pause the recorded show when embedded.</source>
+ <translation>If enabled, TV playback continues when the TV window is embedded in the upcoming program list or recorded list. The default is to pause the recorded show when embedded.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1768"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1784"/>
+ <source>Automatically mark a recording as watched</source>
+- <translation>Automatically mark a recording as watched</translation>
++ <translation>Automatically Mark a Recording as Watched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1773"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1789"/>
+ <source>If enabled, when you exit near the end of a recording it will be marked as watched. The automatic detection is not foolproof, so do not enable this setting if you don&apos;t want an unwatched recording marked as watched.</source>
+ <translation>If enabled, when you exit near the end of a recording it will be marked as watched. The automatic detection is not foolproof, so do not enable this setting if you don&apos;t want an unwatched recording marked as watched.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1787"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1803"/>
+ <source>Live TV idle timeout (mins)</source>
+- <translation>Live TV idle timeout (mins)</translation>
++ <translation>Live TV Idle Timeout (mins)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="1791"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="1807"/>
+ <source>Exit Live TV automatically if left idle for the specified number of minutes. 0 disables the timeout.</source>
+ <translation>Exit Live TV automatically if left idle for the specified number of minutes. 0 disables the timeout.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2025"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2041"/>
+ <source>Letterboxing color</source>
+- <translation>Letterboxing color</translation>
++ <translation>Letterboxing Color</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2030"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2046"/>
+ <source>By default MythTV uses black letterboxing to match broadcaster letterboxing, but those with plasma screens may prefer gray to minimize burn-in. Currently only works with XVideo video renderer.</source>
+ <translation>By default MythTV uses black letterboxing to match broadcaster letterboxing, but those with plasma screens may prefer gray to minimize burn-in. Currently only works with XVideo video renderer.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2043"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2059"/>
+ <source>Video aspect override</source>
+- <translation>Video aspect override</translation>
++ <translation>Video Aspect Override</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2048"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2064"/>
+ <source>When enabled, these will override the aspect ratio specified by any broadcaster for all video streams.</source>
+ <translation>When enabled, these will override the aspect ratio specified by any broadcaster for all video streams.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2058"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2074"/>
+ <source>Zoom</source>
+ <translation>Zoom</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2067"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2083"/>
+ <source>When enabled, these will apply a predefined zoom to all video playback in MythTV.</source>
+ <translation>When enabled, these will apply a predefined zoom to all video playback in MythTV.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3184"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3352"/>
+ <source>Enable realtime priority threads</source>
+- <translation>Enable realtime priority threads</translation>
++ <translation>Enable Realtime Priority Threads</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3186"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3354"/>
+ <source>When running mythfrontend with root privileges, some threads can be given enhanced priority. Disable this if MythFrontend freezes during video playback.</source>
+- <translation>When running mythfrontend with root privileges, some threads can be given enhanced priority. Disable this if MythFrontend freezes during video playback.</translation>
++ <translation>When running MythFrontend with root privileges, some threads can be given enhanced priority. Disable this if MythFrontend freezes during video playback.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3216"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3384"/>
+ <source>Sort titles</source>
+- <translation>Sort titles</translation>
++ <translation>Sort Titles</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3218"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3386"/>
+ <source>Alphabetically</source>
+ <translation>Alphabetically</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3220"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3388"/>
+ <source>By recording priority</source>
+- <translation>By recording priority</translation>
++ <translation>by Recording Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3223"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3391"/>
+ <source>Sets the title sorting order when the view is set to Titles only.</source>
+ <translation>Sets the title sorting order when the view is set to Titles only.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3577"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3712"/>
+ <source>Enable gamma correction for video</source>
+- <translation>Enable gamma correction for video</translation>
++ <translation>Enable Gamma Correction for Video</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3581"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3716"/>
+ <source>If enabled, QuickTime will correct the gamma of the video to match your monitor. Turning this off can save some CPU cycles.</source>
+ <translation>If enabled, QuickTime will correct the gamma of the video to match your monitor. Turning this off can save some CPU cycles.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3592"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3727"/>
+ <source>Scale video as necessary</source>
+- <translation>Scale video as necessary</translation>
++ <translation>Scale Video as Necessary</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3596"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3731"/>
+ <source>If enabled, video will be scaled to fit your window or screen. If unchecked, video will never be made larger than its actual pixel size.</source>
+ <translation>If enabled, video will be scaled to fit your window or screen. If unchecked, video will never be made larger than its actual pixel size.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3607"/>
+- <source>Frames to skip in fullscreen mode</source>
+- <translation>Frames to skip in fullscreen mode</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3742"/>
++ <source>Frames to skip in fullscreen mode</source>
++ <translation>Frames to Skip in Fullscreen Mode</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3746"/>
++ <source>Video displayed in fullscreen or non-windowed mode will skip this many frames for each frame drawn. Set to 0 to show every frame. Only valid when either &quot;Use GUI size for TV playback&quot; or &quot;Run the frontend in a window&quot; is not checked.</source>
++ <translation>Video displayed in fullscreen or non-windowed mode will skip this many frames for each frame drawn. Set to 0 to show every frame. Only valid when either &quot;Use GUI size for TV playback&quot; or &quot;Run the frontend in a window&quot; is not checked.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4086"/>
++ <source>Scaling</source>
++ <translation>Scaling</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4109"/>
++ <source>No scaling</source>
++ <translation>No Scaling</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4213"/>
++ <source>Playback settings</source>
++ <translation>Playback Settings</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4219"/>
++ <source>General Playback</source>
++ <translation>General Playback</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4244"/>
++ <source>Advanced Playback Settings</source>
++ <translation>Advanced Playback Settings</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4260"/>
++ <source>Add a new playback profile</source>
++ <translation>Add a New Playback Profile</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4266"/>
++ <source>View Recordings</source>
++ <translation>View Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3611"/>
+- <source>Video displayed in fullscreen or non-windowed mode will skip this many frames for each frame drawn. Set to 0 to show every frame. Only valid when either &quot;Use GUI size for TV playback&quot; or &quot;Run the frontend in a window&quot; is not checked.</source>
+- <translation>Video displayed in fullscreen or non-windowed mode will skip this many frames for each frame drawn. Set to 0 to show every frame. Only valid when either &quot;Use GUI size for TV playback&quot; or &quot;Run the frontend in a window&quot; is not checked.</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4275"/>
++ <source>Recording Groups</source>
++ <translation>Recording Groups</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3909"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3941"/>
+- <source>General Playback (%1/%2)</source>
+- <extracomment>%2 is the position, %2 is the total</extracomment>
+- <translation>General Playback (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4294"/>
++ <source>Seeking</source>
++ <translation>Seeking</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3976"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4000"/>
+- <source>View Recordings (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>View Recordings (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4302"/>
++ <source>Commercial Skip</source>
++ <translation>Commercial Skip</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3989"/>
+- <source>Recording Groups (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>Recording Groups (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4313"/>
++ <source>Mac OS X Video Settings</source>
++ <translation>Mac OS X Video Settings</translation>
+ </message>
++</context>
++<context>
++ <name>PlaybackSettingsDialog</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4010"/>
+- <source>Seeking (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>Seeking (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4143"/>
++ <source>Playback Profile Menu</source>
++ <translation>Playback Profile Menu</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4021"/>
+- <source>Commercial Skip (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>Commercial Skip (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4147"/>
++ <source>Move Up</source>
++ <translation>Move Up</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4035"/>
+- <source>Mac OS X Video Setting (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>Mac OS X Video Setting (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4149"/>
++ <source>Move Down</source>
++ <translation>Move Down</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="4046"/>
+- <source>Mac OS X Video Settings (%1/%2)</source>
+- <extracomment>%1 is the position, %2 is the total</extracomment>
+- <translation>Mac OS X Video Settings (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="4151"/>
++ <source>Delete</source>
++ <translation>Delete</translation>
+ </message>
+ </context>
+ <context>
+ <name>PlayerSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="87"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="84"/>
+ <source>This is the command used for any file whose extension is not specifically defined. You may also enter the name of one of the playback plugins such as &apos;Internal&apos;.</source>
+ <translation>This is the command used for any file whose extension is not specifically defined. You may also enter the name of one of the playback plugins such as &apos;Internal&apos;.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="92"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="89"/>
+ <source>This can be any command to launch a DVD player. Internal is the default. For other players, %d will be substituted for the DVD device (e.g. /dev/dvd).</source>
+- <translation>This can be any command to launch a DVD player. Internal is the default. For other players, %d will be substituted for the DVD device (e.g. /dev/dvd).</translation>
++ <translation>This can be any command to launch a DVD player. Internal is the default. For other players, %d will be substituted for the DVD device (e.g. /dev/dvd).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="96"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="93"/>
+ <source>This device must exist, and the user playing the DVD needs to have read permission on the device. &apos;default&apos; will let the MediaMonitor choose a device.</source>
+- <translation>This device must exist, and the user playing the DVD needs to have read permission on the device. &apos;default&apos; will let the MediaMonitor choose a device.</translation>
++ <translation>This device must exist, and the user playing the DVD needs to have read permission on the device. &apos;default&apos; will let the MediaMonitor choose a device.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="101"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="98"/>
+ <source>This path is the location your operating system mounts Blu-ray discs.</source>
+ <translation>This path is the location your operating system mounts Blu-ray discs.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="104"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="101"/>
+ <source>If for some reason the default player doesn&apos;t play a video, you can play it in an alternate player by selecting &apos;Play in Alternate Player.&apos;</source>
+ <translation>If for some reason the default player doesn&apos;t play a video, you can play it in an alternate player by selecting &apos;Play in Alternate Player.&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="108"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="105"/>
+ <source>Some Blu-ray discs require that a player region be explicitly set. Only change the value from &apos;No Region&apos; if you encounter a disc which fails to play citing a region mismatch.</source>
+ <translation>Some Blu-ray discs require that a player region be explicitly set. Only change the value from &apos;No Region&apos; if you encounter a disc which fails to play citing a region mismatch.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="112"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="109"/>
+ <source>Exit without saving settings</source>
+- <translation>Exit without saving settings</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="113"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="110"/>
+ <source>Save settings and Exit</source>
+- <translation>Save settings and Exit</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="170"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="158"/>
+ <source>No Region</source>
+ <translation>No Region</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="174"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="162"/>
+ <source>Region A: The Americas, Southeast Asia, Japan</source>
+ <translation>Region A: The Americas, Southeast Asia, Japan</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="179"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="167"/>
+ <source>Region B: Europe, Middle East, Africa, Oceania</source>
+ <translation>Region B: Europe, Middle East, Africa, Oceania</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="184"/>
++ <location filename="../programs/mythfrontend/videoplayersettings.cpp" line="172"/>
+ <source>Region C: Eastern Europe, Central and South Asia</source>
+ <translation>Region C: Eastern Europe, Central and South Asia</translation>
+ </message>
+@@ -14280,93 +14259,241 @@
+ <context>
+ <name>PowerSearchPopup</name>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="261"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="253"/>
+ <source>Select Search</source>
+ <translation>Select Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="262"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="254"/>
+ <source>&lt;New Search&gt;</source>
+ <translation>&lt;New Search&gt;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="277"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="269"/>
+ <source>Edit</source>
+ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="278"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="270"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="279"/>
++ <location filename="../programs/mythfrontend/proglist_helpers.cpp" line="271"/>
+ <source>Record</source>
+ <translation>Record</translation>
+ </message>
+ </context>
+ <context>
+- <name>ProfileGroup</name>
++ <name>PrevRecordedList</name>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="48"/>
+- <source>ProfileGroup</source>
+- <translation>ProfileGroup</translation>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="131"/>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="359"/>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="379"/>
++ <source>Programs</source>
++ <translation>Programs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="168"/>
+- <source>Transcoders</source>
+- <translation>Transcoders</translation>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="132"/>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="360"/>
++ <source>Episodes</source>
++ <translation>Episodes</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="271"/>
++ <source>Last two weeks</source>
++ <translation>Last Two Weeks</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="362"/>
++ <source>Select a program...</source>
++ <translation>Select a Program...</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="364"/>
++ <source>Select the title of the program you wish to find. When finished return with the left arrow key. To search by date press 1.</source>
++ <translation>Select the title of the program you wish to find. When finished return with the left arrow key. To search by date press 1.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="371"/>
++ <source>Reverse Title</source>
++ <comment>Sort sequence</comment>
++ <translation>Reverse Title</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="373"/>
++ <source>Title</source>
++ <comment>Sort sequence</comment>
++ <translation>Title</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="378"/>
++ <source>Dates</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="381"/>
++ <source>Select a month ...</source>
++ <translation>Select a Month...</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="383"/>
++ <source>Select a month to search. When finished return with the left arrow key. To search by title press 2.</source>
++ <translation>Select a month to search. When finished return with the left arrow key. To search by title press 2.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="390"/>
++ <source>Reverse Time</source>
++ <comment>Sort sequence</comment>
++ <translation>Reverse Time</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="392"/>
++ <source>Time</source>
++ <comment>Sort sequence</comment>
++ <translation>Time</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="539"/>
++ <source>Sort Options</source>
++ <translation>Sort Options</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="540"/>
++ <source>Reverse Sort Order</source>
++ <translation>Reverse Sort Order</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="541"/>
++ <source>Sort By Title</source>
++ <translation>Sort by Title</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="542"/>
++ <source>Sort By Time</source>
++ <translation>Sort by Time</translation>
+ </message>
+-</context>
+-<context>
+- <name>ProfileGroupEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="231"/>
+- <source>New Profile Group Name</source>
+- <translation>New Profile Group Name</translation>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="544"/>
++ <source>List Options</source>
++ <translation>List Options</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="546"/>
++ <source>Sort</source>
++ <translation>Sort</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="551"/>
++ <source>Edit Schedule</source>
++ <translation>Edit Schedule</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="552"/>
++ <source>Custom Edit</source>
++ <translation>Custom Edit</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="553"/>
++ <source>Program Details</source>
++ <translation>Program Details</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="554"/>
++ <source>Upcoming</source>
++ <translation>Upcoming</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="555"/>
++ <source>Channel Search</source>
++ <translation>Channel Search</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="557"/>
++ <source>Program Guide</source>
++ <translation>Program Guide</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="572"/>
++ <source>Recording Options</source>
++ <translation>Recording Options</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="578"/>
++ <source>Allow this episode to re-record</source>
++ <translation>Allow This Episode to Re-record</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="580"/>
++ <source>Never record this episode</source>
++ <translation>Never Record This Episode</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="581"/>
++ <source>Remove this episode from the list</source>
++ <translation>Remove This Episode from the List</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="583"/>
++ <source>Remove all episodes for this title</source>
++ <translation>Remove All Episodes for This Title</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="723"/>
++ <source>Delete this episode of &apos;%1&apos; from the previously recorded history?</source>
++ <translation>Delete this episode of &apos;%1&apos; from the previously recorded history?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="301"/>
+- <source>(Create new profile group)</source>
+- <translation>(Create new profile group)</translation>
++ <location filename="../programs/mythfrontend/prevreclist.cpp" line="762"/>
++ <source>Delete all episodes of &apos;%1&apos; from the previously recorded history?</source>
++ <translation>Delete all episodes of &apos;%1&apos; from the previously recorded history?</translation>
++ </message>
++</context>
++<context>
++ <name>ProfileGroup</name>
++ <message>
++ <location filename="../libs/libmythtv/profilegroup.cpp" line="47"/>
++ <source>Profile Group</source>
++ <translation>Profile Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="354"/>
+- <source>Delete profile group:
+-&apos;%1&apos;?</source>
+- <translation>Delete profile group:
+-&apos;%1&apos;?</translation>
++ <location filename="../libs/libmythtv/profilegroup.cpp" line="171"/>
++ <source>Profiles</source>
++ <translation>Profiles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="360"/>
+- <source>Yes, delete group</source>
+- <translation>Yes, delete group</translation>
++ <location filename="../libs/libmythtv/profilegroup.cpp" line="180"/>
++ <source>Transcoders</source>
++ <translation>Transcoders</translation>
+ </message>
++</context>
++<context>
++ <name>ProfileGroupEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.cpp" line="361"/>
+- <source>No, Don&apos;t delete group</source>
+- <translation>No, Don&apos;t delete group</translation>
++ <location filename="../libs/libmythtv/profilegroup.h" line="127"/>
++ <source>Profile Group</source>
++ <translation>Profile Group</translation>
+ </message>
+ </context>
+ <context>
+ <name>ProgDetails</name>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="278"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="400"/>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="281"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="404"/>
+ <source>Title Pronounce</source>
+ <translation>Title Pronounce</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="411"/>
+ <source>Part %1 of %2, </source>
+ <translation>Part %1 of %2, </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="298"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="424"/>
+ <source>%n star(s)</source>
+ <translation>
+ <numerusform>%n star</numerusform>
+@@ -14374,199 +14501,234 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="304"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="430"/>
+ <source>Mono</source>
+ <translation>Mono</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="306"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="432"/>
+ <source>Stereo</source>
+ <translation>Stereo</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="308"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="434"/>
+ <source>Surround Sound</source>
+ <translation>Surround Sound</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="310"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="436"/>
+ <source>Dolby Sound</source>
+ <translation>Dolby Sound</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="312"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="438"/>
+ <source>Audio for Hearing Impaired</source>
+ <translation>Audio for Hearing Impaired</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="314"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="440"/>
+ <source>Audio for Visually Impaired</source>
+ <translation>Audio for Visually Impaired</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="317"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="443"/>
+ <source>HDTV</source>
+ <translation>HDTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="319"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="445"/>
+ <source>Widescreen</source>
+ <translation>Widescreen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="321"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="447"/>
+ <source>AVC/H.264</source>
+ <translation>AVC/H.264</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="323"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="449"/>
+ <source>720p Resolution</source>
+ <translation>720p Resolution</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="325"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="451"/>
+ <source>1080i/p Resolution</source>
+ <translation>1080i/p Resolution</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="328"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="453"/>
++ <source>Damaged</source>
++ <translation>Damaged</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="456"/>
+ <source>CC</source>
+ <comment>Closed Captioned</comment>
+ <translation>CC</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="330"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="458"/>
+ <source>Subtitles Available</source>
+ <translation>Subtitles Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="332"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="460"/>
+ <source>Subtitled</source>
+ <translation>Subtitled</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="334"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="462"/>
+ <source>Deaf Signing</source>
+ <translation>Deaf Signing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="337"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="465"/>
+ <source>Unidentified Episode</source>
+ <translation>Unidentified Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="339"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="467"/>
+ <source>Repeat</source>
+ <translation>Repeat</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="347"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="475"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="367"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="592"/>
+ <source>Category</source>
+ <translation>Category</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="378"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="609"/>
++ <source>Genre</source>
++ <translation>Genre</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="621"/>
+ <source>Type</source>
+ <comment>category_type</comment>
+ <translation>Type</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="384"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="632"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="389"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="638"/>
+ <source>Episode</source>
+ <translation>Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="394"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="626"/>
+ <source>Season</source>
+ <translation>Season</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="396"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="640"/>
+ <source>Syndicated Episode Number</source>
+ <translation>Syndicated Episode Number</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="405"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="650"/>
+ <source>Original Airdate</source>
+ <translation>Original Airdate</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="407"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="652"/>
+ <source>Program ID</source>
+ <translation>Program ID</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="512"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="580"/>
+ <source>Actors</source>
+ <translation>Actors</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="513"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="586"/>
+ <source>Director</source>
+ <translation>Director</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="514"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="587"/>
+ <source>Producer</source>
+ <translation>Producer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="515"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="588"/>
+ <source>Executive Producer</source>
+ <translation>Executive Producer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="516"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="589"/>
+ <source>Writer</source>
+ <translation>Writer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="517"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="581"/>
+ <source>Guest Star</source>
+ <translation>Guest Star</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="518"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="583"/>
+ <source>Host</source>
+ <translation>Host</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="519"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="590"/>
+ <source>Adapter</source>
+ <translation>Adapter</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="520"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="584"/>
+ <source>Presenter</source>
+ <translation>Presenter</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="521"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="585"/>
+ <source>Commentator</source>
+ <translation>Commentator</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="522"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="582"/>
+ <source>Guest</source>
+ <translation>Guest</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="586"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="310"/>
++ <source> MATCHED, adding %1</source>
++ <translation> MATCHED, adding %1</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="314"/>
++ <source> not matched</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="317"/>
++ <source> Query FAILED</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="319"/>
++ <source>Recording Priority Adjustment</source>
++ <translation>Recording Priority Adjustment</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="324"/>
++ <source>Priority Adjustment Total</source>
++ <translation>Priority Adjustment Total</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="718"/>
+ <source>MythTV Status</source>
+ <translation>MythTV Status</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="619"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="751"/>
+ <source>%n hour(s)</source>
+ <translation>
+ <numerusform>%n hour</numerusform>
+@@ -14574,134 +14736,111 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="633"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="765"/>
+ <source>Auto-expire off</source>
+- <translation>Auto-expire off</translation>
++ <translation>Auto-expire Off</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="636"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="768"/>
+ <source>Marked as &apos;watched&apos;</source>
+ <translation>Marked as &apos;watched&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="639"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="771"/>
+ <source>Not the earliest episode</source>
+ <translation>Not the earliest episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="642"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="774"/>
+ <source>Recently deleted episode</source>
+ <translation>Recently deleted episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="654"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="783"/>
+ <source>Recording Rule</source>
+ <translation>Recording Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="655"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="797"/>
+ <source>Last Recorded</source>
+ <translation>Last Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="656"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="798"/>
+ <source>Next Recording</source>
+ <translation>Next Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="657"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="799"/>
+ <source>Average Time Shift</source>
+ <translation>Average Time Shift</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="658"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="800"/>
+ <source>Watch List Score</source>
+ <translation>Watch List Score</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="659"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="801"/>
+ <source>Watch List Status</source>
+ <translation>Watch List Status</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="660"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="784"/>
+ <source>Search Phrase</source>
+ <translation>Search Phrase</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="671"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="795"/>
+ <source>Find ID</source>
+ <translation>Find ID</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="690"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="820"/>
+ <source>GB</source>
+ <comment>GigaBytes</comment>
+ <translation>GB</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="710"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="840"/>
+ <source>Recording Host</source>
+ <translation>Recording Host</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="711"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="841"/>
+ <source>Recording Input</source>
+ <translation>Recording Input</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="712"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="842"/>
+ <source>Recorded File Name</source>
+ <translation>Recorded File Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="713"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="843"/>
+ <source>Recorded File Size</source>
+ <translation>Recorded File Size</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="714"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="844"/>
+ <source>Recording Profile</source>
+ <translation>Recording Profile</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="715"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="845"/>
+ <source>Recording Group</source>
+ <translation>Recording Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="716"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="846"/>
+ <source>Storage Group</source>
+ <translation>Storage Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="717"/>
++ <location filename="../programs/mythfrontend/progdetails.cpp" line="847"/>
+ <source>Playback Group</source>
+ <translation>Playback Group</translation>
+ </message>
+- <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="755"/>
+- <source>Options</source>
+- <translation>Options</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="764"/>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="789"/>
+- <source>Zoom In</source>
+- <translation>Zoom In</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="765"/>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="787"/>
+- <source>Zoom Out</source>
+- <translation>Zoom Out</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="766"/>
+- <location filename="../programs/mythfrontend/progdetails.cpp" line="791"/>
+- <source>Switch Page</source>
+- <translation>Switch Page</translation>
+- </message>
+ </context>
+ <context>
+ <name>ProgFinder</name>
+@@ -14721,93 +14860,93 @@
+ <translation>Times</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="228"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="226"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="238"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="286"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="236"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="284"/>
+ <source>Clear Search</source>
+ <translation>Clear Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="239"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="294"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="237"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="292"/>
+ <source>Edit Search</source>
+ <translation>Edit Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="242"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="306"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="240"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="304"/>
+ <source>Toggle Record</source>
+ <translation>Toggle Record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="243"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="310"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="241"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="308"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="244"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="314"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="242"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="312"/>
+ <source>Upcoming</source>
+ <translation>Upcoming</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="245"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="318"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="243"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="316"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="246"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="322"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="244"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="320"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="247"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="326"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="245"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="324"/>
+ <source>Program Guide</source>
+ <translation>Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="248"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="330"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="246"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="328"/>
+ <source>Channel Search</source>
+ <translation>Channel Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="363"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="396"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="361"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="394"/>
+ <source>No Programs</source>
+ <translation>No Programs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="365"/>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="398"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="363"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="396"/>
+ <source>There are no available programs under this search. Please select another search.</source>
+ <translation>There are no available programs under this search. Please select another search.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="371"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="369"/>
+ <source>Select a letter...</source>
+- <translation>Select a letter...</translation>
++ <translation>Select a Letter...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="373"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="371"/>
+ <source>Pick the first letter of the program name, then press SELECT or the right arrow.</source>
+ <translation>Pick the first letter of the program name, then press SELECT or the right arrow.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="382"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="380"/>
+ <source>Select a program...</source>
+- <translation>Select a program...</translation>
++ <translation>Select a Program...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/progfind.cpp" line="384"/>
++ <location filename="../programs/mythfrontend/progfind.cpp" line="382"/>
+ <source>Select the title of the program you wish to find. When finished return with the left arrow key. Press SELECT to schedule a recording.</source>
+ <translation>Select the title of the program you wish to find. When finished return with the left arrow key. Press SELECT to schedule a recording.</translation>
+ </message>
+@@ -14815,201 +14954,201 @@
+ <context>
+ <name>ProgLister</name>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="187"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="188"/>
+ <source>Program List</source>
+ <translation>Program List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="195"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="196"/>
+ <source>Program Listings</source>
+ <translation>Program Listings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="196"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="197"/>
+ <source>New Title Search</source>
+ <translation>New Title Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="197"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="198"/>
+ <source>Title Search</source>
+ <translation>Title Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="198"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="199"/>
+ <source>Keyword Search</source>
+ <translation>Keyword Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="199"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="200"/>
+ <source>People Search</source>
+ <translation>People Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="200"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="201"/>
+ <source>Stored Search</source>
+ <translation>Stored Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="201"/>
+ <location filename="../programs/mythfrontend/proglist.cpp" line="202"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="203"/>
+ <source>Power Search</source>
+ <translation>Power Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="203"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="204"/>
+ <source>Rule Search</source>
+ <translation>Rule Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="204"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="205"/>
+ <source>Category Search</source>
+ <translation>Category Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="205"/>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="345"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="206"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="346"/>
+ <source>Channel Search</source>
+ <translation>Channel Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="206"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="207"/>
+ <source>Movie Search</source>
+ <translation>Movie Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="207"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="208"/>
+ <source>Time Search</source>
+ <translation>Time Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="208"/>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="349"/>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="757"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="209"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="350"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="758"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="209"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="210"/>
+ <source>Unknown Search</source>
+ <translation>Unknown Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="329"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="330"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="333"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="334"/>
+ <source>Choose Search Phrase...</source>
+ <translation>Choose Search Phrase...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="336"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="337"/>
+ <source>Sort</source>
+ <translation>Sort</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="339"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="340"/>
+ <source>Record</source>
+ <translation>Record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="341"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="342"/>
+ <source>Edit Schedule</source>
+ <translation>Edit Schedule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="342"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="343"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="343"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="344"/>
+ <source>Program Guide</source>
+ <translation>Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="347"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="348"/>
+ <source>Upcoming</source>
+ <translation>Upcoming</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="350"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="351"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="356"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="357"/>
+ <source>Delete Rule</source>
+ <translation>Delete Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="361"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="362"/>
+ <source>Delete Episode</source>
+ <translation>Delete Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="519"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="520"/>
+ <source>Start search from date and time</source>
+- <translation>Start search from date and time</translation>
++ <translation>Start Search from Date and Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="766"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="767"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="324"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="325"/>
+ <source>Sort Options</source>
+ <translation>Sort Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="325"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="326"/>
+ <source>Reverse Sort Order</source>
+ <translation>Reverse Sort Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="326"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="327"/>
+ <source>Sort By Title</source>
+- <translation>Sort By Title</translation>
++ <translation>Sort by Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="327"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="328"/>
+ <source>Sort By Time</source>
+- <translation>Sort By Time</translation>
++ <translation>Sort by Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="489"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="490"/>
+ <source>Select Rating</source>
+ <translation>Select Rating</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="490"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="491"/>
+ <source>Select Channel</source>
+ <translation>Select Channel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="491"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="492"/>
+ <source>Select Category</source>
+ <translation>Select Category</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="492"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="493"/>
+ <source>Select List</source>
+ <translation>Select List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="494"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="495"/>
+ <source>Select a search stored from</source>
+- <translation>Select a search stored from</translation>
++ <translation>Select a Search Stored from</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="495"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="496"/>
+ <source>Custom Record</source>
+ <translation>Custom Record</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/proglist.cpp" line="964"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="965"/>
+ <source>%n star(s)</source>
+ <translatorcomment>Used to have singular/plural problem</translatorcomment>
+ <translation>
+@@ -15018,7 +15157,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/proglist.cpp" line="969"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="970"/>
+ <source>%n star(s) and above</source>
+ <translatorcomment>Used to have singular/plural problem</translatorcomment>
+ <translation>
+@@ -15027,91 +15166,85 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="1388"/>
+- <source>^(The |A |An )</source>
+- <comment>Regular Expression for what to ignore when sorting</comment>
+- <translation>^(The |A |An )</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="1579"/>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="1608"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="1576"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="1605"/>
+ <source>%1 of %2</source>
+ <comment>Current position in list where %1 is the position, %2 is the total count</comment>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="659"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="660"/>
+ <source>Delete &apos;%1&apos; %2 rule?</source>
+ <translation>Delete &apos;%1&apos; %2 rule?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="683"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="684"/>
+ <source>Delete this episode of &apos;%1&apos;?</source>
+ <translation>Delete this episode of &apos;%1&apos;?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="716"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="717"/>
+ <source>Delete all episodes of &apos;%1&apos;?</source>
+ <translation>Delete all episodes of &apos;%1&apos;?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="754"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="755"/>
+ <source>NOTE: removing items from this list will not delete any recordings.</source>
+ <translation>NOTE: removing items from this list will not delete any recordings.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="761"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="762"/>
+ <source>Allow this episode to re-record</source>
+- <translation>Allow this episode to re-record</translation>
++ <translation>Allow This Episode to Re-record</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="763"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="764"/>
+ <source>Never record this episode</source>
+- <translation>Never record this episode</translation>
++ <translation>Never Record This Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="764"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="765"/>
+ <source>Remove this episode from the list</source>
+- <translation>Remove this episode from the list</translation>
++ <translation>Remove This Episode from the List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="765"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="766"/>
+ <source>Remove all episodes for this title</source>
+- <translation>Remove all episodes for this title</translation>
++ <translation>Remove All Episodes for This Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="940"/>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="960"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="941"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="961"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="943"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="944"/>
+ <source>Premieres</source>
+ <translation>Premieres</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="946"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="947"/>
+ <source>Movies</source>
+ <translation>Movies</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="949"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="950"/>
+ <source>Series</source>
+ <translation>Series</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="952"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="953"/>
+ <source>Specials</source>
+ <translation>Specials</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="962"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="963"/>
+ <source>Unrated</source>
+ <translation>Unrated</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/proglist.cpp" line="986"/>
++ <location filename="../programs/mythfrontend/proglist.cpp" line="987"/>
+ <source>Power Recording Rule</source>
+ <translation>Power Recording Rule</translation>
+ </message>
+@@ -15139,158 +15272,148 @@
+ <context>
+ <name>ProgramRecPriority</name>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="450"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="475"/>
+ <source>Schedule Priorities</source>
+ <translation>Schedule Priorities</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="625"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="649"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="634"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="691"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="658"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="715"/>
+ <source>Increase Priority</source>
+ <translation>Increase Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="635"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="695"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="659"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="719"/>
+ <source>Decrease Priority</source>
+ <translation>Decrease Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="636"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="699"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="660"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="723"/>
+ <source>Sort</source>
+ <translation>Sort</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="637"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="703"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="661"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="727"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="638"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="707"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="662"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="731"/>
+ <source>Upcoming</source>
+ <translation>Upcoming</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="639"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="712"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="663"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="736"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="640"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="717"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="664"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="741"/>
+ <source>Delete Rule</source>
+ <translation>Delete Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="641"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="722"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="665"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="746"/>
+ <source>New Template</source>
+ <translation>New Template</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="653"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="677"/>
+ <source>Sort Options</source>
+ <translation>Sort Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="662"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="738"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="686"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="762"/>
+ <source>Reverse Sort Order</source>
+ <translation>Reverse Sort Order</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="663"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="743"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="687"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="767"/>
+ <source>Sort By Title</source>
+- <translation>Sort By Title</translation>
++ <translation>Sort by Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="664"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="754"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="688"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="778"/>
+ <source>Sort By Priority</source>
+- <translation>Sort By Priority</translation>
++ <translation>Sort by Priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="665"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="765"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="689"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="789"/>
+ <source>Sort By Type</source>
+- <translation>Sort By Type</translation>
++ <translation>Sort by Type</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="666"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="776"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="690"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="800"/>
+ <source>Sort By Count</source>
+- <translation>Sort By Count</translation>
++ <translation>Sort by Count</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="667"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="789"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="691"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="813"/>
+ <source>Sort By Record Count</source>
+- <translation>Sort By Record Count</translation>
++ <translation>Sort by Record Count</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="668"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="800"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="692"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="824"/>
+ <source>Sort By Last Recorded</source>
+- <translation>Sort By Last Recorded</translation>
++ <translation>Sort by Last Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="669"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="811"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="693"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="835"/>
+ <source>Sort By Average Delay</source>
+- <translation>Sort By Average Delay</translation>
++ <translation>Sort by Average Delay</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="728"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="752"/>
+ <source>Template Name</source>
+ <translation>Template Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1019"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1043"/>
+ <source>Delete &apos;%1&apos; %2 rule?</source>
+- <translation>Delete &apos;%1&apos; %2 rule?</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1212"/>
+- <source>^(The |A |An )</source>
+- <translation>^(The |A |An )</translation>
++ <translation>Delete &apos;%1&apos; %2 rule?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1429"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1430"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1431"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1544"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1545"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1546"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1450"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1451"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1452"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1565"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1566"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1567"/>
+ <source>Any</source>
+ <translation>Any</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1395"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1488"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1416"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="1509"/>
+ <source>Recording %1 of %2</source>
+ <translation>Recording %1 of %2</translation>
+ </message>
+ </context>
+ <context>
+ <name>QObject</name>
+- <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="393"/>
+- <source>^(The |A |An )</source>
+- <translation>^(The |A |An )</translation>
+- </message>
+ <message numerus="yes">
+- <location filename="../libs/libmyth/programinfo.cpp" line="1697"/>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1702"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1888"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1893"/>
+ <source>%n hour(s)</source>
+ <translation>
+ <numerusform>%n hour</numerusform>
+@@ -15298,8 +15421,8 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmyth/programinfo.cpp" line="1686"/>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1695"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1877"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1886"/>
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n minute</numerusform>
+@@ -15307,24 +15430,28 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1035"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1055"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="222"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="318"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.cpp" line="397"/>
++ <location filename="../libs/libmythmetadata/metadatacommon.h" line="255"/>
+ <source>Manual Record</source>
+ <translation>Manual Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1725"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1916"/>
+ <source>Re-Record</source>
+- <translation>Re-Record</translation>
++ <translation>Re-record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1767"/>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1772"/>
+- <location filename="../libs/libmyth/programtypes.cpp" line="212"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1958"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1963"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="172"/>
+ <source>Repeat</source>
+ <translation>Repeat</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmyth/programinfo.cpp" line="1795"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1986"/>
+ <source>%n star(s)</source>
+ <translation>
+ <numerusform>%n star</numerusform>
+@@ -15333,60 +15460,60 @@
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelinfo.cpp" line="280"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1288"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1261"/>
+ <source>Yes</source>
+ <translation>Yes</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelinfo.cpp" line="280"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1289"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1262"/>
+ <source>No</source>
+ <translation>No</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3111"/>
+- <location filename="../libs/libmyth/programinfo.cpp" line="4980"/>
+- <location filename="../libs/libmyth/programtypes.cpp" line="228"/>
+- <location filename="../libs/libmyth/programtypes.cpp" line="231"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3298"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5167"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="188"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="191"/>
+ <location filename="../libs/libmythtv/videoouttypes.h" line="137"/>
+ <location filename="../libs/libmythtv/videoouttypes.h" line="160"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1053"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1123"/>
+ <source>Unknown</source>
+ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3115"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3302"/>
+ <source>Playing</source>
+ <translation>Playing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3122"/>
+- <location filename="../libs/libmyth/programtypes.cpp" line="185"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3309"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="143"/>
+ <source>Recording</source>
+ <translation>Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3130"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3317"/>
+ <source>Transcoding</source>
+ <translation>Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3117"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3304"/>
+ <source>PIP</source>
+ <translation>PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1847"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2038"/>
+ <source>Blu-ray Disc</source>
+ <translation>Blu-ray Disc</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3119"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3306"/>
+ <source>PBP</source>
+ <translation>PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3124"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3311"/>
+ <source>File transfer</source>
+ <translation>File transfer</translation>
+ </message>
+@@ -15436,47 +15563,47 @@
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="55"/>
+ <source>Record only this showing</source>
+- <translation>Record only this showing</translation>
++ <translation>Record Only This Showing</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="57"/>
+ <source>Record all showings</source>
+- <translation>Record all showings</translation>
++ <translation>Record All Showings</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="59"/>
+ <source>Record only one showing</source>
+- <translation>Record only one showing</translation>
++ <translation>Record Only One Showing</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="61"/>
+ <source>Record one showing every day</source>
+- <translation>Record one showing every day</translation>
++ <translation>Record One Showing Every Day</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="63"/>
+ <source>Record one showing every week</source>
+- <translation>Record one showing every week</translation>
++ <translation>Record One Showing Every Week</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="65"/>
+ <source>Record this showing with override options</source>
+- <translation>Record this showing with override options</translation>
++ <translation>Record This Showing with Override Options</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="67"/>
+ <source>Do not record this showing</source>
+- <translation>Do not record this showing</translation>
++ <translation>Do Not Record This Showing</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="69"/>
+ <source>Modify this recording rule template</source>
+- <translation>Modify this recording rule template</translation>
++ <translation>Modify This Recording Rule Template</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="71"/>
+ <source>Do not record this program</source>
+- <translation>Do not record this program</translation>
++ <translation>Do Not Record This Program</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="137"/>
+@@ -15513,665 +15640,675 @@
+ <translation>Override Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="176"/>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="45"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="134"/>
+ <source>Not Recording</source>
+ <translation>Not Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="181"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="139"/>
+ <source>Aborted</source>
+ <translation>Aborted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="183"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="141"/>
+ <source>Recorded</source>
+ <translation>Recorded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="187"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="145"/>
+ <source>Tuning</source>
+ <translation>Tuning</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="191"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="149"/>
+ <source>Will Record</source>
+ <translation>Will Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="193"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="151"/>
++ <source>Pending</source>
++ <translation>Pending</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="153"/>
+ <source>Don&apos;t Record</source>
+ <translation>Don&apos;t Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="195"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="155"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="197"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="157"/>
+ <source>Currently Recorded</source>
+ <translation>Currently Recorded</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="199"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="159"/>
+ <source>Earlier Showing</source>
+ <translation>Earlier Showing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="201"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="161"/>
+ <source>Max Recordings</source>
+ <translation>Max Recordings</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="203"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="163"/>
+ <source>Manual Cancel</source>
+ <translation>Manual Cancel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="206"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="166"/>
+ <source>Missed</source>
+ <translation>Missed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="208"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="168"/>
+ <source>Conflicting</source>
+ <translation>Conflicting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="210"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="170"/>
+ <source>Later Showing</source>
+ <translation>Later Showing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="214"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="174"/>
+ <source>Inactive</source>
+ <translation>Inactive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="216"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="176"/>
+ <source>Low Disk Space</source>
+ <translation>Low Disk Space</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="218"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="178"/>
+ <source>Tuner Busy</source>
+ <translation>Tuner Busy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="220"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="180"/>
+ <source>Recorder Failed</source>
+ <translation>Recorder Failed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="222"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="182"/>
+ <source>Not Listed</source>
+ <translation>Not Listed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="224"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="184"/>
+ <source>Never Record</source>
+ <translation>Never Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="226"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="186"/>
+ <source>Recorder Off-Line</source>
+ <translation>Recorder Off-Line</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="239"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="199"/>
+ <source>This showing is not scheduled to record</source>
+- <translation>This showing is not scheduled to record</translation>
++ <translation>This showing is not scheduled to record.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="249"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="209"/>
+ <source>This showing will be recorded.</source>
+ <translation>This showing will be recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="252"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="212"/>
++ <source>This showing is about to record.</source>
++ <translation>This showing is about to record.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="215"/>
+ <source>This showing is being recorded.</source>
+ <translation>This showing is being recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="262"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="225"/>
+ <source>This showing was recorded.</source>
+ <translation>This showing was recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="265"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="228"/>
+ <source>This showing was recorded but was aborted before completion.</source>
+ <translation>This showing was recorded but was aborted before completion.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="270"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="233"/>
+ <source>This showing was not recorded because the master backend was not running.</source>
+ <translation>This showing was not recorded because the master backend was not running.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="278"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="241"/>
+ <source>This showing was not recorded because there wasn&apos;t enough disk space.</source>
+ <translation>This showing was not recorded because there wasn&apos;t enough disk space.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="282"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="245"/>
+ <source>This showing was not recorded because the recorder was already in use.</source>
+ <translation>This showing was not recorded because the recorder was already in use.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="286"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="249"/>
+ <source>This showing was not recorded because the recorder failed.</source>
+ <translation>This showing was not recorded because the recorder failed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="330"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="293"/>
+ <source>this episode will be recorded at a later time instead.</source>
+ <translation>this episode will be recorded at a later time instead.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="347"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="310"/>
+ <source>the required recorder is off-line.</source>
+ <translation>the required recorder is off-line.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="274"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="237"/>
+ <source>This showing was not recorded because it was manually cancelled.</source>
+ <translation>This showing was not recorded because it was manually cancelled.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="96"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="51"/>
+ <source>A</source>
+ <comment>RecStatusChar RecStatus::Aborted</comment>
+ <translation>A</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="99"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="54"/>
+ <source>R</source>
+ <comment>RecStatusChar RecStatus::Recorded</comment>
+ <translation>R</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="114"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="72"/>
+ <source>X</source>
+ <comment>RecStatusChar RecStatus::DontRecord</comment>
+ <translation>X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="117"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="75"/>
+ <source>P</source>
+ <comment>RecStatusChar RecStatus::PreviousRecording</comment>
+ <translation>P</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="120"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="78"/>
+ <source>R</source>
+ <comment>RecStatusChar RecStatus::CurrentRecording</comment>
+ <translation>R</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="123"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="81"/>
+ <source>E</source>
+ <comment>RecStatusChar RecStatus::EarlierShowing</comment>
+ <translation>E</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="126"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="84"/>
+ <source>T</source>
+ <comment>RecStatusChar RecStatus::TooManyRecordings</comment>
+ <translation>T</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="129"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="87"/>
+ <source>c</source>
+ <comment>RecStatusChar RecStatus::Cancelled</comment>
+ <translation>c</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="133"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="91"/>
+ <source>M</source>
+ <comment>RecStatusChar RecStatus::Missed</comment>
+ <translation>M</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="136"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="94"/>
+ <source>C</source>
+ <comment>RecStatusChar RecStatus::Conflict</comment>
+ <translation>C</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="139"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="97"/>
+ <source>L</source>
+ <comment>RecStatusChar RecStatus::LaterShowing</comment>
+ <translation>L</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="142"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="100"/>
+ <source>r</source>
+ <comment>RecStatusChar RecStatus::Repeat</comment>
+ <translation>r</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="145"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="103"/>
+ <source>x</source>
+ <comment>RecStatusChar RecStatus::Inactive</comment>
+ <translation>x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="148"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="106"/>
+ <source>K</source>
+ <comment>RecStatusChar RecStatus::LowDiskSpace</comment>
+ <translation>K</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="151"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="109"/>
+ <source>B</source>
+ <comment>RecStatusChar RecStatus::TunerBusy</comment>
+ <translation>B</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="154"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="112"/>
+ <source>f</source>
+ <comment>RecStatusChar RecStatus::Failed</comment>
+ <translation>f</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="157"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="115"/>
+ <source>N</source>
+ <comment>RecStatusChar RecStatus::NotListed</comment>
+ <translation>N</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="160"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="118"/>
+ <source>V</source>
+ <comment>RecStatusChar RecStatus::NeverRecord</comment>
+ <translation>V</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="163"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="121"/>
+ <source>F</source>
+ <comment>RecStatusChar RecStatus::Offline</comment>
+ <translation>F</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="189"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="147"/>
+ <source>Failing</source>
+ <translation>Failing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="258"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="221"/>
+ <source>The showing is failing to record because of errors.</source>
+ <translation>The showing is failing to record because of errors.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="351"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="314"/>
+ <source>This showing will not be recorded.</source>
+ <translation>This showing will not be recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="353"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="316"/>
+ <source>This showing was not recorded.</source>
+ <translation>This showing was not recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="290"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="253"/>
+ <source>The status of this showing is unknown.</source>
+ <translation>The status of this showing is unknown.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="255"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="218"/>
+ <source>The showing is being tuned.</source>
+ <translation>The showing is being tuned.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="298"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="261"/>
+ <source>This showing will not be recorded because </source>
+ <translation>This showing will not be recorded because </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="300"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="263"/>
+ <source>This showing was not recorded because </source>
+ <translation>This showing was not recorded because </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="305"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="268"/>
+ <source>it was manually set to not record.</source>
+ <translation>it was manually set to not record.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="308"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="271"/>
+ <source>this episode was previously recorded according to the duplicate policy chosen for this title.</source>
+ <translation>this episode was previously recorded according to the duplicate policy chosen for this title.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="313"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="276"/>
+ <source>this episode was previously recorded and is still available in the list of recordings.</source>
+ <translation>this episode was previously recorded and is still available in the list of recordings.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="318"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="281"/>
+ <source>this episode will be recorded at an earlier time instead.</source>
+ <translation>this episode will be recorded at an earlier time instead.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="322"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="285"/>
+ <source>too many recordings of this program have already been recorded.</source>
+ <translation>too many recordings of this program have already been recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="326"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="289"/>
+ <source>another program with a higher priority will be recorded.</source>
+ <translation>another program with a higher priority will be recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="334"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="297"/>
+ <source>this episode is a repeat.</source>
+ <translation>this episode is a repeat.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="337"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="300"/>
+ <source>this recording rule is inactive.</source>
+ <translation>this recording rule is inactive.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="340"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="303"/>
+ <source>this rule does not match any showings in the current program listings.</source>
+ <translation>this rule does not match any showings in the current program listings.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="344"/>
++ <location filename="../libs/libmythservicecontracts/enums/recStatus.cpp" line="307"/>
+ <source>it was marked to never be recorded.</source>
+ <translation>it was marked to never be recorded.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5223"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5363"/>
+ <source>Default</source>
+ <comment>Recording Profile Default</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5224"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5364"/>
+ <source>High Quality</source>
+ <comment>Recording Profile High Quality</comment>
+ <translation>High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5225"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5365"/>
+ <source>Live TV</source>
+ <comment>Recording Profile Live TV</comment>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5226"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5366"/>
+ <source>Low Quality</source>
+ <comment>Recording Profile Low Quality</comment>
+ <translation>Low Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5227"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5367"/>
+ <source>Medium Quality</source>
+ <comment>Recording Profile Medium Quality</comment>
+ <translation>Medium Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5233"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5373"/>
+ <source>CRC IP Recorders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>CRC IP Recorders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5235"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5375"/>
+ <source>FireWire Input</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>FireWire Input</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5237"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5377"/>
+ <source>Freebox Input</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Freebox Input</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5239"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5379"/>
+ <source>Hardware DVB Encoders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Hardware DVB Encoders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5241"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5381"/>
+ <source>Hardware HDTV</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Hardware HDTV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5243"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5383"/>
+ <source>Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5245"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5385"/>
+ <source>HD-PVR Recorders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>HD-PVR Recorders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5247"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5387"/>
+ <source>HDHomeRun Recorders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>HDHomeRun Recorders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5249"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5389"/>
+ <source>MPEG-2 Encoders (PVR-x50, PVR-500)</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>MPEG-2 Encoders (PVR-x50, PVR-500)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5253"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5393"/>
+ <source>Transcoders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Transcoders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5257"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5397"/>
+ <source>V4L2 Encoders</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>V4L2 Encoders</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5261"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5401"/>
+ <source>All Programs</source>
+ <comment>Recording Group All Programs</comment>
+ <translation>All Programs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5262"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5402"/>
+ <source>All</source>
+ <comment>Recording Group All Programs -- short form</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5264"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5404"/>
+ <source>Default</source>
+ <comment>Recording Group Default</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5265"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5405"/>
+ <source>Deleted</source>
+ <comment>Recording Group Deleted</comment>
+ <translation>Deleted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5272"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5412"/>
+ <source>Default</source>
+ <comment>Storage Group Name</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3128"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3315"/>
+ <source>Commercial Detection</source>
+ <translation>Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1679"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1870"/>
+ <source>%1 GB</source>
+ <comment>GigaBytes</comment>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1835"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2026"/>
+ <source>DVD</source>
+ <translation>DVD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1839"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2030"/>
+ <source>HTTP Streaming</source>
+ <translation>HTTP Streaming</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1843"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2034"/>
+ <source>RTSP Streaming</source>
+ <translation>RTSP Streaming</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1852"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2043"/>
+ <source>Recording</source>
+ <comment>Recorded file, object not action</comment>
+ <translation>Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3132"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3319"/>
+ <source>Preview Generation</source>
+ <translation>Preview Generation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3134"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3321"/>
+ <source>User Job</source>
+ <translation>User Job</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5228"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5368"/>
+ <source>MPEG-2</source>
+ <comment>Recording Profile MPEG-2</comment>
+ <translation>MPEG-2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5229"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5369"/>
+ <source>RTjpeg/MPEG-4</source>
+ <comment>Recording Profile RTjpeg/MPEG-4</comment>
+ <translation>RTjpeg/MPEG-4</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5251"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5391"/>
+ <source>Software Encoders (V4L based)</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>Software Encoders (V4L based)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5255"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5395"/>
+ <source>USB MPEG-4 Encoder (Plextor ConvertX, etc)</source>
+ <comment>Recording Profile Group Name</comment>
+ <translation>USB MPEG-4 Encoder (Plextor ConvertX, etc)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5263"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5403"/>
+ <source>Live TV</source>
+ <comment>Recording Group Live TV</comment>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5268"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5408"/>
+ <source>All Programs - %1</source>
+ <comment>Show all programs from a specific recording group</comment>
+ <translation>All Programs - %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5273"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5413"/>
+ <source>Live TV</source>
+ <comment>Storage Group Name</comment>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5274"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5414"/>
+ <source>Thumbnails</source>
+ <comment>Storage Group Name</comment>
+ <translation>Thumbnails</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5275"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5415"/>
+ <source>DB Backups</source>
+ <comment>Storage Group Name</comment>
+ <translation>DB Backups</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="5278"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="5418"/>
+ <source>Default</source>
+ <comment>Playback Group Name</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="378"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="81"/>
+ <source>Commercial Free</source>
+ <translation>Commercial Free</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="380"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="83"/>
+ <source>Use Global Setting</source>
+ <translation>Use Global Setting</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="391"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="94"/>
+ <source>All Available Methods</source>
+ <translation>All Available Methods</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="393"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="96"/>
+ <source>Blank Frame + Scene Change</source>
+ <translation>Blank Frame + Scene Change</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="395"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="98"/>
+ <source>Blank Frame + Logo Detection</source>
+ <translation>Blank Frame + Logo Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="397"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="100"/>
+ <source>Scene Change + Logo Detection</source>
+ <translation>Scene Change + Logo Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="399"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="102"/>
+ <source>Blank Frame Detection</source>
+ <translation>Blank Frame Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="401"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="104"/>
+ <source>Scene Change Detection</source>
+ <translation>Scene Change Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="403"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="106"/>
+ <source>Logo Detection</source>
+ <translation>Logo Detection</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="406"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="109"/>
+ <source>Experimental</source>
+ <translation>Experimental</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programtypes.cpp" line="408"/>
++ <location filename="../libs/libmyth/programtypes.cpp" line="111"/>
+ <source>Pre &amp; Post Roll</source>
+ <translation>Pre &amp; Post Roll</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="414"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="409"/>
+ <source>master</source>
+ <translation>master</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="935"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="928"/>
+ <source> %n day(s),</source>
+ <translation>
+ <numerusform> %n day,</numerusform>
+@@ -16179,7 +16316,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="936"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="929"/>
+ <source> %n hour(s) and</source>
+ <translation>
+ <numerusform> %n hour and</numerusform>
+@@ -16187,7 +16324,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="937"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="930"/>
+ <source> %n minute(s)</source>
+ <translation>
+ <numerusform> %n minute</numerusform>
+@@ -16195,19 +16332,19 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="940"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="933"/>
+ <source>within one minute</source>
+ <comment>Recording starting</comment>
+ <translation>within one minute</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="943"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="936"/>
+ <source>soon</source>
+ <comment>Recording starting</comment>
+ <translation>soon</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythbackend/httpstatus.cpp" line="1437"/>
++ <location filename="../programs/mythbackend/httpstatus.cpp" line="1430"/>
+ <source>(%n day(s))</source>
+ <translation>
+ <numerusform>(%n day)</numerusform>
+@@ -16215,300 +16352,309 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1127"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1136"/>
+ <source>Track</source>
+ <translation>Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1130"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1139"/>
+ <source>Audio track</source>
+- <translation>Audio track</translation>
++ <translation>Audio Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1132"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1141"/>
+ <source>Video track</source>
+- <translation>Video track</translation>
++ <translation>Video Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1134"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1143"/>
+ <source>Subtitle track</source>
+- <translation>Subtitle track</translation>
++ <translation>Subtitle Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1136"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1145"/>
+ <source>CC</source>
+ <comment>EIA-608 closed captions</comment>
+ <translation>CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1138"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1147"/>
+ <source>ATSC CC</source>
+ <comment>EIA-708 closed captions</comment>
+ <translation>ATSC CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1140"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1149"/>
+ <source>TT CC</source>
+ <comment>Teletext closed captions</comment>
+ <translation>TT CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1142"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1151"/>
+ <source>TT Menu</source>
+ <comment>Teletext Menu</comment>
+ <translation>TT Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1144"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1153"/>
+ <source>Text</source>
+ <comment>Text stream</comment>
+ <translation>Text</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1146"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1155"/>
+ <source>TXT File</source>
+ <comment>Text File</comment>
+ <translation>TXT File</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1182"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1191"/>
+ <source>Audio Description</source>
+ <comment>On-screen events described for the visually impaired</comment>
+ <translation>Audio Description</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1186"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1195"/>
+ <source>Clean Effects</source>
+ <comment>No dialog, background audio only</comment>
+ <translation>Clean Effects</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1190"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1199"/>
+ <source>Hearing Impaired</source>
+ <comment>Clear dialog for the hearing impaired</comment>
+ <translation>Hearing Impaired</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1194"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1203"/>
+ <source>Spoken Subtitles</source>
+ <comment>Subtitles are read out for the visually impaired</comment>
+ <translation>Spoken Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1198"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1207"/>
+ <source>Commentary</source>
+ <comment>Director/Cast commentary track</comment>
+ <translation>Commentary</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/decoderbase.cpp" line="1202"/>
++ <location filename="../libs/libmythtv/decoderbase.cpp" line="1211"/>
+ <source>Normal</source>
+ <comment>Ordinary audio track</comment>
+ <translation>Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="228"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="561"/>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="207"/>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="271"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="243"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="558"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="205"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="266"/>
+ <source>Off</source>
+ <translation>Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="227"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="560"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="242"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="557"/>
+ <source>On</source>
+ <translation>On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.h" line="74"/>
++ <location filename="../libs/libmythtv/profilegroup.h" line="75"/>
+ <source>Hostname</source>
+ <translation>Hostname</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="88"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="122"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="150"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="197"/>
+ <source>Port</source>
+ <translation>Port</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="349"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="505"/>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="346"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="367"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="419"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="440"/>
+ <source>Wake command</source>
+- <translation>Wake command</translation>
++ <translation>Wake Command</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="163"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="189"/>
+ <source>Could not find specified tuner (%1).</source>
+ <translation>Could not find specified tuner (%1).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="166"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="192"/>
+ <source>Specified tuner (%1) is already in use.</source>
+ <translation>Specified tuner (%1) is already in use.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="171"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="197"/>
+ <source>All tuners are currently in use. If you want to watch TV, you can cancel one of the in-progress recordings from the delete menu</source>
+- <translation>All tuners are currently in use. If you want to watch TV, you can cancel one of the in-progress recordings from the delete menu</translation>
++ <translation>All tuners are currently in use. If you want to watch TV, you can cancel one of the in-progress recordings from the delete menu.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="191"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="217"/>
+ <source>Failed to configure plugin</source>
+- <translation>Failed to configure plugin</translation>
++ <translation>Failed to Configure Plugin</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="203"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="229"/>
+ <source>Plugin failure</source>
+- <translation>Plugin failure</translation>
++ <translation>Plugin Failure</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="205"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="231"/>
+ <source>%1 failed to run for some reason</source>
+ <translation>%1 failed to run for some reason</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="385"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="467"/>
+ <source>No UPnP backends found</source>
+ <comment>Backend Setup</comment>
+ <translation>No UPnP backends found</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="700"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1050"/>
+ <source>Cannot find (ping) database host %1 on the network</source>
+ <comment>Backend Setup</comment>
+ <translation>Cannot find (ping) database host %1 on the network</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="715"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1059"/>
+ <source>Cannot login to database</source>
+ <comment>Backend Setup</comment>
+ <translation>Cannot login to database</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1038"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1064"/>
++ <source>Cannot connect to backend</source>
++ <comment>Backend Setup</comment>
++ <translation>Cannot connect to backend</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1420"/>
+ <source>Could not connect to master backend</source>
+- <translation>Could not connect to master backend</translation>
++ <translation>Could Not Connect to Master Backend</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1053"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1435"/>
+ <source>Backend is online</source>
+- <translation>Backend is online</translation>
++ <translation>Backend is Online</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1134"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1602"/>
+ <source>This application is not compatible with the installed MythTV libraries.</source>
+ <translation>This application is not compatible with the installed MythTV libraries.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1029"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1411"/>
+ <source>The connection to the master backend server has gone away for some reason. Is it running?</source>
+ <translation>The connection to the master backend server has gone away for some reason. Is it running?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1033"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1415"/>
+ <source>Could not connect to the master backend server. Is it running? Is the IP address set for it in mythtv-setup correct?</source>
+ <translation>Could not connect to the master backend server. Is it running? Is the IP address set for it in mythtv-setup correct?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythcontext.cpp" line="1067"/>
++ <location filename="../libs/libmyth/mythcontext.cpp" line="1449"/>
+ <source>The server uses network protocol version %1, but this client only understands version %2. Make sure you are running compatible versions of the backend and frontend.</source>
+- <translation>The server uses network protocol version %1, but this client only understands version %2. Make sure you are running compatible versions of the backend and frontend.</translation>
++ <translation>The server uses network protocol version %1, but this client only understands version %2. Make sure you are running compatible versions of the backend and frontend.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythdialogs.cpp" line="716"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1436"/>
+- <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="144"/>
++ <location filename="../libs/libmyth/mythdialogs.cpp" line="709"/>
++ <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="142"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythdialogs.cpp" line="837"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1437"/>
++ <location filename="../libs/libmyth/mythdialogs.cpp" line="828"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1743"/>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1747"/>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="125"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2421"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2459"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2476"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2497"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1934"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="1938"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="114"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2399"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2437"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2454"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2475"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="228"/>
+- <location filename="../libs/libmythtv/avformatdecoder.cpp" line="4127"/>
++ <location filename="../libs/libmythtv/avformatdecoder.cpp" line="4500"/>
+ <source>Subtitle</source>
+ <translation>Subtitle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/avformatdecoder.cpp" line="4079"/>
++ <location filename="../libs/libmythtv/avformatdecoder.cpp" line="3791"/>
++ <source>Video Decode Error</source>
++ <translation>Video Decode Error</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/avformatdecoder.cpp" line="4450"/>
+ <source> (forced)</source>
+ <translation> (forced)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="986"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1185"/>
+ <source>Input %1:%2</source>
+ <translation>Input %1:%2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1563"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1737"/>
+ <source>Could not query inputs.</source>
+ <translation>Could not query inputs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1594"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1768"/>
+ <source>ERROR, Compile with V4L support to query inputs</source>
+- <translation>ERROR, Compile with V4L support to query inputs</translation>
++ <translation>ERROR, Compile with V4L support to query inputs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1626"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1800"/>
+ <source>ERROR, Compile with V4L support to query audio inputs</source>
+- <translation>ERROR, Compile with V4L support to query audio inputs</translation>
++ <translation>ERROR, Compile with V4L support to query audio inputs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1691"/>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1724"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1865"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1898"/>
+ <source>Could not open &apos;%1&apos; to probe its inputs.</source>
+ <translation>Could not open &apos;%1&apos; to probe its inputs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="1761"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="1935"/>
+ <source>ERROR, Compile with DVB support to query inputs</source>
+- <translation>ERROR, Compile with DVB support to query inputs</translation>
++ <translation>ERROR, Compile with DVB support to query inputs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2160"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2348"/>
+ <source>The VBox software version is too old (%1), we require %2</source>
+ <translation>The VBox software version is too old (%1), we require %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2087"/>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2145"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2276"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2333"/>
+ <source>Unable to connect to device.</source>
+ <translation>Unable to connect to device.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2101"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2289"/>
+ <source>Invalid Device ID</source>
+ <translation>Invalid Device ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2111"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2299"/>
+ <source>Invalid Device ID or address.</source>
+- <translation>Invalid Device ID or address.</translation>
++ <translation>Invalid Device ID or Address</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/cardutil.cpp" line="2126"/>
++ <location filename="../libs/libmythtv/cardutil.cpp" line="2314"/>
+ <source>, firmware: %2</source>
+ <translation>, firmware: %2</translation>
+ </message>
+@@ -16518,94 +16664,94 @@
+ <translation>Sports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="1831"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="2022"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2012"/>
+- <location filename="../programs/mythfrontend/guidegrid.cpp" line="2319"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2020"/>
++ <location filename="../programs/mythfrontend/guidegrid.cpp" line="2324"/>
+ <source>All Channels</source>
+ <translation>All Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="267"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="264"/>
+ <source>Updated Channel %1</source>
+ <translation>Updated Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="292"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="289"/>
+ <source>Added Channel %1</source>
+ <translation>Added Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="293"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="290"/>
+ <source>Failed to add channel %1</source>
+- <translation>Failed to add channel %1</translation>
++ <translation>Failed to Add Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="619"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="638"/>
+ <source>%1 -- Testing decryption of program %2</source>
+- <translation>%1 -- Testing decryption of program %2</translation>
++ <translation>%1 -- Testing Decryption of Program %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="895"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="915"/>
+ <source>Program %1</source>
+ <translation>Program %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="896"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="916"/>
+ <source>Unknown decryption status</source>
+- <translation>Unknown decryption status</translation>
++ <translation>Unknown Decryption Status</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="898"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="918"/>
+ <source>Encrypted</source>
+ <translation>Encrypted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="900"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="920"/>
+ <source>Decrypted</source>
+ <translation>Decrypted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="935"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="955"/>
+ <source>%1 -- Timed out</source>
+- <translation>%1 -- Timed out</translation>
++ <translation>%1 -- Timed Out</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="970"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="990"/>
+ <source>%1 possible channels</source>
+- <translation>%1 possible channels</translation>
++ <translation>%1 Possible Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="971"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="991"/>
+ <source>no channels</source>
+- <translation>no channels</translation>
++ <translation>No Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="982"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1002"/>
+ <source>%1, no signal</source>
+- <translation>%1, no signal</translation>
++ <translation>%1, No Signal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="987"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1007"/>
+ <source>%1 -- Found %2 probable channels</source>
+- <translation>%1 -- Found %2 probable channels</translation>
++ <translation>%1 -- Found %2 Probable Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1170"/>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1736"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1190"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1798"/>
+ <source> offset %2</source>
+ <translation> offset %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1740"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1802"/>
+ <source>ScanTransport Tuning to %1 mplexid(%2)</source>
+ <translation>ScanTransport Tuning to %1 mplexid(%2)</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1754"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="1816"/>
+ <source>: Found %n</source>
+ <translation>
+ <numerusform>: Found %n</numerusform>
+@@ -16613,28 +16759,28 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2016"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2076"/>
+ <source>Frequency %1</source>
+ <translation>Frequency %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2079"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2139"/>
+ <source>ATSC Channel %1</source>
+ <translation>ATSC Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2174"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2234"/>
+ <source>as</source>
+ <translation>as</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2179"/>
++ <location filename="../libs/libmythtv/channelscan/channelscan_sm.cpp" line="2239"/>
+ <source>Skipping %1, not in imported channel map</source>
+- <translation>Skipping %1, not in imported channel map</translation>
++ <translation>Skipping %1, Not in Imported Channel Map</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelscan/frequencytablesetting.cpp" line="38"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1276"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1333"/>
+ <source>Broadcast</source>
+ <translation>Broadcast</translation>
+ </message>
+@@ -16648,7 +16794,7 @@
+ <location filename="../libs/libmythtv/channelscan/frequencytablesetting.cpp" line="40"/>
+ <location filename="../libs/libmythtv/channelscan/frequencytablesetting.cpp" line="42"/>
+ <location filename="../libs/libmythtv/channelscan/frequencytablesetting.cpp" line="44"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="522"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="595"/>
+ <source>High</source>
+ <translation>High</translation>
+ </message>
+@@ -16758,775 +16904,741 @@
+ <translation>France</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="143"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="154"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="455"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="157"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="168"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="445"/>
+ <source>Frequency</source>
+ <translation>Frequency</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="308"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="302"/>
+ <source>Contrast</source>
+ <translation>Contrast</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="306"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="300"/>
+ <source>Brightness</source>
+ <translation>Brightness</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="310"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="304"/>
+ <source>Color</source>
+ <translation>Color</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="312"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="306"/>
+ <source>Hue</source>
+ <translation>Hue</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="49"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="50"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="51"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="52"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="53"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="54"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="55"/>
++ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="56"/>
+ <source>Seen</source>
+ <translation>Seen</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="56"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="57"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="58"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="59"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="60"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="61"/>
+ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="62"/>
++ <location filename="../libs/libmythtv/recorders/dtvsignalmonitor.cpp" line="63"/>
+ <source>Matching</source>
+ <translation>Matching</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="76"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="544"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="66"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="541"/>
+ <source>Analog</source>
+ <translation>Analog</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/teletextscreen.cpp" line="652"/>
++ <location filename="../libs/libmythtv/teletextscreen.cpp" line="654"/>
+ <source>Page Not Available</source>
+ <comment>Requested Teletext page not available</comment>
+ <translation>Page Not Available</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/playercontext.cpp" line="783"/>
++ <location filename="../libs/libmythtv/playercontext.cpp" line="788"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.h" line="63"/>
++ <location filename="../libs/libmythtv/profilegroup.h" line="64"/>
+ <source>Profile Group Name</source>
+ <translation>Profile Group Name</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/profilegroup.h" line="86"/>
++ <location filename="../libs/libmythtv/profilegroup.h" line="87"/>
+ <source>Card-Type</source>
+- <translation>Card-Type</translation>
++ <translation>Card Type</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/recordingprofile.cpp" line="76"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="569"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="566"/>
+ <source>Codec</source>
+ <translation>Codec</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="102"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="327"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="103"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="328"/>
+ <source>Volume (%)</source>
+ <translation>Volume (%)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="114"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="115"/>
+ <source>Sampling rate</source>
+- <translation>Sampling rate</translation>
++ <translation>Sampling Rate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="115"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="116"/>
+ <source>Sets the audio sampling rate for your DSP. Ensure that you choose a sampling rate appropriate for your device. btaudio may only allow 32000.</source>
+- <translation>Sets the audio sampling rate for your DSP. Ensure that you choose a sampling rate appropriate for your device. btaudio may only allow 32000.</translation>
++ <translation>Sets the audio sampling rate for your DSP. Ensure that you choose a sampling rate appropriate for your device. btaudio may only allow 32000.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="178"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="179"/>
+ <source>Type</source>
+ <translation>Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="195"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="196"/>
+ <source>Sets the audio type</source>
+- <translation>Sets the audio type</translation>
++ <translation>Sets the Audio Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="242"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="270"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="298"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1103"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="243"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="271"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="299"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1077"/>
+ <source>Bitrate</source>
+ <translation>Bitrate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="259"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="287"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="315"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="260"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="288"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="316"/>
+ <source>Sets the audio bitrate</source>
+- <translation>Sets the audio bitrate</translation>
++ <translation>Sets the Audio Bitrate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="329"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="330"/>
+ <source>Volume of the recording </source>
+- <translation>Volume of the recording </translation>
++ <translation>Volume of the Recording </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="344"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="343"/>
+ <source>Bitrate Settings</source>
+ <translation>Bitrate Settings</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="369"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="367"/>
+ <source>SAP/Bilingual</source>
+ <translation>SAP/Bilingual</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="371"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="369"/>
+ <source>Main Language</source>
+ <translation>Main Language</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="372"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="370"/>
+ <source>SAP Language</source>
+ <translation>SAP Language</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="373"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="371"/>
+ <source>Dual</source>
+ <translation>Dual</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="376"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="374"/>
+ <source>Chooses the language(s) to record when two languages are broadcast. Only Layer II supports the recording of two languages (Dual).Requires ivtv 0.4.0 or later.</source>
+ <translation>Chooses the language(s) to record when two languages are broadcast. Only Layer II supports the recording of two languages (Dual).Requires ivtv 0.4.0 or later.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="411"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="413"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="406"/>
+ <source>Audio Quality</source>
+ <translation>Audio Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="580"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="578"/>
+ <source>RTjpeg Quality</source>
+ <translation>RTjpeg Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="582"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="580"/>
+ <source>Higher is better quality.</source>
+ <translation>Higher is better quality.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="593"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="591"/>
+ <source>Luma filter</source>
+- <translation>Luma filter</translation>
++ <translation>Luma Filter</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="595"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="608"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="593"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="606"/>
+ <source>Lower is better.</source>
+ <translation>Lower is better.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="606"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="604"/>
+ <source>Chroma filter</source>
+- <translation>Chroma filter</translation>
++ <translation>Chroma Filter</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="633"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="631"/>
+ <source>Scale bitrate for frame size</source>
+- <translation>Scale bitrate for frame size</translation>
++ <translation>Scale Bitrate for Frame Size</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="648"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="646"/>
+ <source>Minimum quality</source>
+- <translation>Minimum quality</translation>
++ <translation>Minimum Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="650"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="664"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="679"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="648"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="662"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="677"/>
+ <source>Modifying the default may have severe consequences.</source>
+ <translation>Modifying the default may have severe consequences.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="662"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="660"/>
+ <source>Maximum quality</source>
+- <translation>Maximum quality</translation>
++ <translation>Maximum Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="677"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="675"/>
+ <source>Max quality difference between frames</source>
+- <translation>Max quality difference between frames</translation>
++ <translation>Max Quality Difference Between Frames</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="691"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="689"/>
+ <source>Enable interlaced DCT encoding</source>
+- <translation>Enable interlaced DCT encoding</translation>
++ <translation>Enable Interlaced DCT Encoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="707"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="705"/>
+ <source>Enable interlaced motion estimation</source>
+- <translation>Enable interlaced motion estimation</translation>
++ <translation>Enable Interlaced Motion Estimation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="723"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="721"/>
+ <source>Enable high-quality encoding</source>
+- <translation>Enable high-quality encoding</translation>
++ <translation>Enable High-quality Encoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="738"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="736"/>
+ <source>Enable 4MV encoding</source>
+- <translation>Enable 4MV encoding</translation>
++ <translation>Enable 4MV Encoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="740"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="738"/>
+ <source>If set, the MPEG4 encoder will use &apos;4MV&apos; motion-vector encoding. This requires much more processing, but can result in better video. It is highly recommended that the HQ option is enabled if 4MV is enabled.</source>
+- <translation>If set, the MPEG4 encoder will use &apos;4MV&apos; motion-vector encoding. This requires much more processing, but can result in better video. It is highly recommended that the HQ option is enabled if 4MV is enabled.</translation>
++ <translation>If set, the MPEG4 encoder will use &apos;4MV&apos; motion-vector encoding. This requires much more processing, but can result in better video. It is highly recommended that the HQ option is enabled if 4MV is enabled.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="756"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="754"/>
+ <source>Number of threads</source>
+- <translation>Number of threads</translation>
++ <translation>Number of Threads</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="759"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="757"/>
+ <source>Threads to use for software encoding.</source>
+ <translation>Threads to use for software encoding.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="760"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="758"/>
+ <source>Set to a value less than or equal to the number of processors on the backend that will be doing the encoding.</source>
+ <translation>Set to a value less than or equal to the number of processors on the backend that will be doing the encoding.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="87"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="88"/>
+ <source>MP3 quality</source>
+- <translation>MP3 quality</translation>
++ <translation>MP3 Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="89"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="90"/>
+ <source>The higher the slider number, the lower the quality of the audio. Better quality audio (lower numbers) requires more CPU.</source>
+ <translation>The higher the slider number, the lower the quality of the audio. Better quality audio (lower numbers) requires more CPU.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="104"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="105"/>
+ <source>Recording volume of the capture card.</source>
+ <translation>Recording volume of the capture card.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="392"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="390"/>
+ <source>Bitrate Mode</source>
+ <translation>Bitrate Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="397"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="395"/>
+ <source>Bitrate mode</source>
+- <translation>Bitrate mode</translation>
++ <translation>Bitrate Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="619"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="617"/>
+ <source>Bitrate (kb/s)</source>
+ <translation>Bitrate (kb/s)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="621"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="619"/>
+ <source>Bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hr.</source>
+ <translation>Bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hr.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="635"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="633"/>
+ <source>If set, the bitrate specified will be used for 640x480. If other resolutions are used, the bitrate will be scaled appropriately.</source>
+ <translation>If set, the bitrate specified will be used for 640x480. If other resolutions are used, the bitrate will be scaled appropriately.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="693"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="691"/>
+ <source>If set, the MPEG4 encoder will use interlaced DCT encoding. You may want this when encoding interlaced video; however, this is experimental and may cause damaged video.</source>
+ <translation>If set, the MPEG4 encoder will use interlaced DCT encoding. You may want this when encoding interlaced video; however, this is experimental and may cause damaged video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="709"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="707"/>
+ <source>If set, the MPEG4 encoder will use interlaced motion estimation. You may want this when encoding interlaced video; however, this is experimental and may cause damaged video.</source>
+ <translation>If set, the MPEG4 encoder will use interlaced motion estimation. You may want this when encoding interlaced video; however, this is experimental and may cause damaged video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="725"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="723"/>
+ <source>If set, the MPEG4 encoder will use &apos;high-quality&apos; encoding options. This requires much more processing, but can result in better video.</source>
+ <translation>If set, the MPEG4 encoder will use &apos;high-quality&apos; encoding options. This requires much more processing, but can result in better video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="778"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="776"/>
+ <source>Avg. Bitrate (kb/s)</source>
+ <translation>Avg. Bitrate (kb/s)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="781"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="779"/>
+ <source>Average bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hour.</source>
+ <translation>Average bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hour.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="799"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="797"/>
+ <source>Max. Bitrate (kb/s)</source>
+ <translation>Max. Bitrate (kb/s)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="802"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="800"/>
+ <source>Maximum bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hour.</source>
+ <translation>Maximum bitrate in kilobits/second. As a guide, 2200 kb/s is approximately 1 GB/hour.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="817"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="815"/>
+ <source>Stream Type</source>
+ <translation>Stream Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="828"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="826"/>
+ <source>Sets the type of stream generated by your PVR.</source>
+ <translation>Sets the type of stream generated by your PVR.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="843"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="841"/>
+ <source>Aspect Ratio</source>
+ <translation>Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="845"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="843"/>
+ <source>Square</source>
+ <translation>Square</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="852"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="850"/>
+ <source>Sets the aspect ratio of stream generated by your PVR.</source>
+ <translation>Sets the aspect ratio of stream generated by your PVR.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="864"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="862"/>
+ <source>Quality</source>
+ <translation>Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="877"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="875"/>
+ <source>Horizontal Decimation</source>
+ <translation>Horizontal Decimation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="892"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="890"/>
+ <source>Vertical Decimation</source>
+ <translation>Vertical Decimation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="910"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="912"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="905"/>
+ <source>Video Compression</source>
+ <translation>Video Compression</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="920"/>
+- <source>RTjpeg Parameters</source>
+- <translation>RTjpeg Parameters</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="928"/>
+- <source>MPEG-4 Parameters</source>
+- <translation>MPEG-4 Parameters</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="952"/>
+- <source>MPEG-2 Parameters</source>
+- <translation>MPEG-2 Parameters</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="966"/>
+- <source>Hardware MJPEG Parameters</source>
+- <translation>Hardware MJPEG Parameters</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="974"/>
+- <source>MPEG-2 Hardware Encoder</source>
+- <translation>MPEG-2 Hardware Encoder</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="983"/>
+- <source>MPEG-4 AVC Hardware Encoder</source>
+- <translation>MPEG-4 AVC Hardware Encoder</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="986"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1077"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="956"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1049"/>
+ <source>Low Resolution</source>
+ <translation>Low Resolution</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="994"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1085"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="964"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1058"/>
+ <source>Medium Resolution</source>
+ <translation>Medium Resolution</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1002"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1093"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="972"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1067"/>
+ <source>High Resolution</source>
+ <translation>High Resolution</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1211"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1184"/>
+ <source>Enable auto-transcode after recording</source>
+- <translation>Enable auto-transcode after recording</translation>
++ <translation>Enable Auto-transcode After Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1213"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1186"/>
+ <source>Automatically transcode when a recording is made using this profile and the recording&apos;s schedule is configured to allow transcoding.</source>
+ <translation>Automatically transcode when a recording is made using this profile and the recording&apos;s schedule is configured to allow transcoding.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1226"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1199"/>
+ <source>Resize video while transcoding</source>
+- <translation>Resize video while transcoding</translation>
++ <translation>Resize Video While Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1281"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1254"/>
+ <source>If set, extra files will be created for each recording with the name of the recording followed by &apos;.ts.raw&apos;. These extra files represent the full contents of the transport stream used to generate the recording. (For debugging purposes)</source>
+ <translation>If set, extra files will be created for each recording with the name of the recording followed by &apos;.ts.raw&apos;. These extra files represent the full contents of the transport stream used to generate the recording. (For debugging purposes)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1301"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1274"/>
+ <source>Custom filters</source>
+- <translation>Custom filters</translation>
++ <translation>Custom Filters</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1228"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1201"/>
+ <source>Allows the transcoder to resize the video during transcoding.</source>
+ <translation>Allows the transcoder to resize the video during transcoding.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1240"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1213"/>
+ <source>Lossless transcoding</source>
+- <translation>Lossless transcoding</translation>
++ <translation>Lossless Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1242"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1215"/>
+ <source>Only reencode where absolutely needed (normally only around cutpoints). Otherwise keep audio and video formats identical to the source. This should result in the highest quality, but won&apos;t save as much space.</source>
+- <translation>Only reencode where absolutely needed (normally only around cutpoints). Otherwise keep audio and video formats identical to the source. This should result in the highest quality, but won&apos;t save as much space.</translation>
++ <translation>Only re-encode where absolutely needed (normally only around cutpoints). Otherwise keep audio and video formats identical to the source. This should result in the highest quality, but won&apos;t save as much space.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1257"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1230"/>
+ <source>Recording Type</source>
+ <translation>Recording Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1259"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1232"/>
+ <source>This option allows you to filter out unwanted streams. &apos;Normal&apos; will record all relevant streams including interactive television data. &apos;TV Only&apos; will record only audio, video and subtitle streams. </source>
+ <translation>This option allows you to filter out unwanted streams. &apos;Normal&apos; will record all relevant streams including interactive television data. &apos;TV Only&apos; will record only audio, video and subtitle streams. </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1266"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1239"/>
+ <source>Normal</source>
+ <translation>Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1267"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1240"/>
+ <source>TV Only</source>
+ <translation>TV Only</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1268"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1241"/>
+ <source>Audio Only</source>
+ <translation>Audio Only</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1279"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1252"/>
+ <source>Record Full TS?</source>
+ <translation>Record Full TS?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1302"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1275"/>
+ <source>Filters used when transcoding with this profile. This value must be blank to perform lossless transcoding. Format: [[&lt;filter&gt;=&lt;options&gt;,]...]</source>
+- <translation>Filters used when transcoding with this profile. This value must be blank to perform lossless transcoding. Format: [[&lt;filter&gt;=&lt;options&gt;,]...]</translation>
++ <translation>Filters used when transcoding with this profile. This value must be blank to perform lossless transcoding. Format: [[&lt;filter&gt;=&lt;options&gt;,]...]</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/settings.cpp" line="805"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="226"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="239"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="251"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="304"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="241"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="254"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="266"/>
+ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="319"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="332"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="374"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="334"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="347"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="389"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1294"/>
+ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1321"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1348"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="559"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="573"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="586"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="646"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="662"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="676"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="556"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="570"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="583"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="643"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="659"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="673"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="718"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2314"/>
+ <source>Auto</source>
+ <translation>Auto</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1324"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1297"/>
+ <source>Width</source>
+ <translation>Width</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1328"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1301"/>
+ <source>If the width is set to &apos;Auto&apos;, the width will be calculated based on the height and the recording&apos;s physical aspect ratio.</source>
+ <translation>If the width is set to &apos;Auto&apos;, the width will be calculated based on the height and the recording&apos;s physical aspect ratio.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1331"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1304"/>
+ <source>Width to use for encoding. Note: PVR-x50 cards may produce ghosting if this is not set to 720 or 768 for NTSC and PAL, respectively.</source>
+ <translation>Width to use for encoding. Note: PVR-x50 cards may produce ghosting if this is not set to 720 or 768 for NTSC and PAL, respectively.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1351"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1324"/>
+ <source>Height</source>
+ <translation>Height</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1355"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1328"/>
+ <source>If the height is set to &apos;Auto&apos;, the height will be calculated based on the width and the recording&apos;s physical aspect ratio.</source>
+ <translation>If the height is set to &apos;Auto&apos;, the height will be calculated based on the width and the recording&apos;s physical aspect ratio.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1358"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1331"/>
+ <source>Height to use for encoding. Note: PVR-x50 cards may produce ghosting if this is not set to 480 or 576 for NTSC and PAL, respectively.</source>
+ <translation>Height to use for encoding. Note: PVR-x50 cards may produce ghosting if this is not set to 480 or 576 for NTSC and PAL, respectively.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1374"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1376"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1343"/>
+ <source>Image size</source>
+ <translation>Image size</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1465"/>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1467"/>
+- <source>Profile</source>
+- <translation>Profile</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1887"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1774"/>
+ <source>Autodetect</source>
+ <translation>Autodetect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1902"/>
+- <location filename="../programs/mythtranscode/transcode.cpp" line="104"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1790"/>
++ <location filename="../programs/mythtranscode/transcode.cpp" line="111"/>
+ <source>Autodetect from %1</source>
+ <translation>Autodetect from %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1952"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1850"/>
+ <source>Transcode using Autodetect</source>
+ <translation>Transcode using Autodetect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1965"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1863"/>
+ <source>Transcode using &quot;%1&quot;</source>
+ <translation>Transcode using &quot;%1&quot;</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1971"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1869"/>
+ <source>Record using the &quot;%1&quot; profile</source>
+ <translation>Record using the &quot;%1&quot; profile</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.h" line="67"/>
++ <location filename="../libs/libmythtv/recordingprofile.h" line="59"/>
+ <source>Profile name</source>
+- <translation>Profile name</translation>
++ <translation>Profile Name</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/programrecpriority.cpp" line="123"/>
++ <location filename="../programs/mythfrontend/programrecpriority.cpp" line="112"/>
+ <source>Default (Template)</source>
+ <translation>Default (Template)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="91"/>
+- <source>This section lists each transport that MythTV currently knows about. The display fields are video source, modulation, frequency, and when relevant symbol rate, network id, and transport id.</source>
+- <translation>This section lists each transport that MythTV currently knows about. The display fields are video source, modulation, frequency, and when relevant symbol rate, network id, and transport id.</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="185"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="210"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="241"/>
+- <source>Transport Editor</source>
+- <translation>Transport Editor</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="186"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="98"/>
+ <source>Sorry, the Transport Editor can only be used to edit transports which are connected to a card input.</source>
+ <translation>Sorry, the Transport Editor can only be used to edit transports which are connected to a card input.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="211"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="121"/>
+ <source>Failed to probe a capture card connected to this transport&apos;s video source. Please make sure the backend is not running.</source>
+ <translation>Failed to probe a capture card connected to this transport&apos;s video source. Please make sure the backend is not running.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="242"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="150"/>
+ <source>The Video Sources to which this Transport is connected are incompatible, please create separate video sources for these cards. </source>
+ <translation>The Video Sources to which this Transport is connected are incompatible, please create separate video sources for these cards. </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="430"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="420"/>
+ <source>Digital TV Standard</source>
+ <translation>Digital TV Standard</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="431"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="421"/>
+ <source>Guiding standard to use for making sense of the data streams after they have been demodulated, error corrected and demultiplexed.</source>
+ <translation>Guiding standard to use for making sense of the data streams after they have been demodulated, error corrected and demultiplexed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="436"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="426"/>
+ <source>DVB</source>
+ <translation>DVB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="440"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="430"/>
+ <source>ATSC</source>
+ <translation>ATSC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="441"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="431"/>
+ <source>OpenCable</source>
+ <translation>OpenCable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="444"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="434"/>
+ <source>MPEG</source>
+ <translation>MPEG</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="456"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="446"/>
+ <source>Frequency (Option has no default).
+ The frequency for this channel in</source>
+ <translation>Frequency (Option has no default).
+ The frequency for this channel in</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="470"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="460"/>
+ <source>Symbol Rate (symbols/sec).
+ Most DVB-S transponders transmit at 27.5 million symbols per second.</source>
+ <translation>Symbol Rate (symbols/sec).
+ Most DVB-S transponders transmit at 27.5 million symbols per second.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="690"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="687"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="700"/>
+ <source>Modulation System</source>
+ <translation>Modulation System</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="691"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="688"/>
+ <source>Modulation System (Default: DVB-T)</source>
+ <translation>Modulation System (Default: DVB-T)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="692"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="689"/>
+ <source>DVB-T</source>
+ <translation>DVB-T</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="693"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="690"/>
+ <source>DVB-T2</source>
+ <translation>DVB-T2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="165"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="187"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="468"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="701"/>
++ <source>Modulation System (Default: DVB-S)</source>
++ <translation>Modulation System (Default: DVB-S)</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="702"/>
++ <source>DVB-S</source>
++ <translation>DVB-S</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="703"/>
++ <source>DVB-S2</source>
++ <translation>DVB-S2</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="179"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="202"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="458"/>
+ <source>Symbol Rate</source>
+ <translation>Symbol Rate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="207"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="491"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="222"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="481"/>
+ <source>Polarity</source>
+ <translation>Polarity</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="208"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="492"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="223"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="482"/>
+ <source>Polarity (Option has no default)</source>
+ <translation>Polarity (Option has no default)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="209"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="493"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="224"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="483"/>
+ <source>Horizontal</source>
+ <translation>Horizontal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="210"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="494"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="225"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="484"/>
+ <source>Vertical</source>
+ <translation>Vertical</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="211"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="495"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="226"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="485"/>
+ <source>Right Circular</source>
+ <translation>Right Circular</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="212"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="496"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="227"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="486"/>
+ <source>Left Circular</source>
+ <translation>Left Circular</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="512"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="502"/>
+ <source>Modulation</source>
+ <translation>Modulation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="513"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="503"/>
+ <source>Modulation, aka Constellation</source>
+ <translation>Modulation, aka Constellation</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="523"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="520"/>
+ <source>QAM Auto</source>
+ <translation>QAM Auto</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="221"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="555"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="236"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="552"/>
+ <source>Inversion</source>
+ <translation>Inversion</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="222"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="556"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="237"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="553"/>
+ <source>Inversion (Default: Auto):
+ Most cards can autodetect this now, so leave it at Auto unless it won&apos;t work.</source>
+ <translation>Inversion (Default: Auto):
+ Most cards can autodetect this now, so leave it at Auto unless it won&apos;t work.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="237"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="571"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="252"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="568"/>
+ <source>Bandwidth</source>
+ <translation>Bandwidth</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="572"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="569"/>
+ <source>Bandwidth (Default: Auto)</source>
+ <translation>Bandwidth (Default: Auto)</translation>
+ </message>
+@@ -17543,7 +17655,7 @@
+ <message>
+ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="70"/>
+ <source>Search new Transports</source>
+- <translation>Search new Transports</translation>
++ <translation>Search New Transports</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="72"/>
+@@ -17581,653 +17693,802 @@
+ <translation>If set, only non-encrypted channels will be added during the scan.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="128"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="129"/>
++ <source>Add full Transport Stream channels</source>
++ <translation>Add Full Transport Stream Channels</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="131"/>
++ <source>If set, Create MPTS channels, which allow recording of the full, unaltered, transport stream.</source>
++ <translation>If set, Create MPTS channels, which allow recording of the full, unaltered, transport stream.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="142"/>
+ <source>Test Decryptability</source>
+ <translation>Test Decryptability</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="130"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="144"/>
+ <source>Test all channels to see if they can be decrypted with installed CAM/smartcard. Sometimes the encrypted flag is set spuriously. Attention: Enabling this option increases the scan time for each encrypted channel by a couple of seconds.</source>
+ <translation>Test all channels to see if they can be decrypted with installed CAM/smartcard. Sometimes the encrypted flag is set spuriously. Attention: Enabling this option increases the scan time for each encrypted channel by a couple of seconds.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="144"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="158"/>
+ <source>Frequency (Option has no default)
+ The frequency for this channel in kHz.</source>
+ <translation>Frequency (Option has no default)
+ The frequency for this channel in kHz.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="155"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="169"/>
+ <source>Frequency (Option has no default)
+ The frequency for this channel in Hz.</source>
+ <translation>Frequency (Option has no default)
+ The frequency for this channel in Hz.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="167"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="181"/>
+ <source>Symbol Rate (symbols/second).
+ Most DVB-S transponders transmit at 27.5 million symbols per second.</source>
+ <translation>Symbol Rate (symbols/second).
+ Most DVB-S transponders transmit at 27.5 million symbols per second.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="189"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="204"/>
+ <source>Symbol Rate (symbols/second).
+ Most DVB-C transports transmit at 6.9 or 6.875 million symbols per second.</source>
+ <translation>Symbol Rate (symbols/second).
+ Most DVB-C transports transmit at 6.9 or 6.875 million symbols per second.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="238"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="253"/>
+ <source>Bandwidth (Default: Auto)
+ </source>
+ <translation>Bandwidth (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="240"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="574"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="255"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="571"/>
+ <source>6 MHz</source>
+ <translation>6 MHz</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="241"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="575"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="256"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="572"/>
+ <source>7 MHz</source>
+ <translation>7 MHz</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="242"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="576"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="257"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="573"/>
+ <source>8 MHz</source>
+ <translation>8 MHz</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="226"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="252"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="333"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="587"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="677"/>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="704"/>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="301"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2298"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="267"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="348"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="584"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="674"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="918"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="295"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2276"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="271"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="607"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="286"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="604"/>
+ <source>FEC</source>
+ <translation>FEC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="272"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="608"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="287"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="605"/>
+ <source>Forward Error Correction (Default: Auto)</source>
+ <translation>Forward Error Correction (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="282"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="620"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="297"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="617"/>
+ <source>LP Coderate</source>
+ <translation>LP Coderate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="283"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="621"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="298"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="618"/>
+ <source>Low Priority Code Rate (Default: Auto)</source>
+ <translation>Low Priority Code Rate (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="292"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="633"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="307"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="630"/>
+ <source>HP Coderate</source>
+ <translation>HP Coderate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="293"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="634"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="308"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="631"/>
+ <source>High Priority Code Rate (Default: Auto)</source>
+ <translation>High Priority Code Rate (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="302"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="644"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="317"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="641"/>
+ <source>Guard Interval</source>
+ <translation>Guard Interval</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="303"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="645"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="318"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="642"/>
+ <source>Guard Interval (Default: Auto)</source>
+ <translation>Guard Interval (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="317"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="660"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="332"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="657"/>
+ <source>Trans. Mode</source>
+ <translation>Trans. Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="318"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="661"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="333"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="658"/>
+ <source>Transmission Mode (Default: Auto)</source>
+ <translation>Transmission Mode (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="330"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="674"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="345"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="671"/>
+ <source>Hierarchy</source>
+ <translation>Hierarchy</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="331"/>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="675"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="346"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="672"/>
+ <source>Hierarchy (Default: Auto)</source>
+ <translation>Hierarchy (Default: Auto)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="345"/>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="357"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="360"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="372"/>
+ <source>Mod Sys</source>
+ <translation>Mod Sys</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="346"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="361"/>
+ <source>Modulation system (Default: DVB-S)</source>
+- <translation>Modulation system (Default: DVB-S)</translation>
++ <translation>Modulation System (Default: DVB-S)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="358"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="373"/>
+ <source>Modulation system (Default: DVB-T)</source>
+- <translation>Modulation system (Default: DVB-T)</translation>
++ <translation>Modulation System (Default: DVB-T)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="369"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="384"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="713"/>
+ <source>Roll-off</source>
+ <translation>Roll-off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="370"/>
++ <location filename="../libs/libmythtv/channelscan/channelscanmiscsettings.h" line="385"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="714"/>
+ <source>Roll-off factor (Default: 0.35)</source>
+ <translation>Roll-off factor (Default: 0.35)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="710"/>
+- <source>Transport Options</source>
+- <translation>Transport Options</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="799"/>
+- <source>DVB Transport</source>
+- <translation>DVB Transport</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="55"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="54"/>
+ <source>(CH)</source>
+ <translation>(CH)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="56"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="55"/>
+ <source>(REC)</source>
+ <translation>(REC)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="70"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="66"/>
+ <source>Adjust Playback</source>
+ <translation>Adjust Playback</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="71"/>
+- <location filename="../libs/libmythtv/tv.cpp" line="72"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="67"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="68"/>
+ <source>Adjust Recorder</source>
+ <translation>Adjust Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="85"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="78"/>
+ <source>Auto-Skip OFF</source>
+- <translation>Auto-Skip OFF</translation>
++ <translation>Auto-skip Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="86"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="79"/>
+ <source>Auto-Skip ON</source>
+- <translation>Auto-Skip ON</translation>
++ <translation>Auto-skip On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv.cpp" line="87"/>
++ <location filename="../libs/libmythtv/tv.cpp" line="80"/>
+ <source>Auto-Skip Notify</source>
+- <translation>Auto-Skip Notify</translation>
++ <translation>Auto-skip Notify</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_rec.cpp" line="3731"/>
++ <location filename="../libs/libmythtv/tv_rec.cpp" line="3728"/>
+ <source>On known multiplex...</source>
+- <translation>On known multiplex...</translation>
++ <translation>On Known Multiplex...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tvremoteutil.cpp" line="467"/>
++ <location filename="../libs/libmythtv/tvremoteutil.cpp" line="476"/>
+ <source>Error querying recorder state</source>
+- <translation>Error querying recorder state</translation>
++ <translation>Error Querying Recorder State</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="641"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="840"/>
+ <source>Standard</source>
+ <translation>Standard</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="642"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="841"/>
+ <source>Mac hardware acceleration</source>
+- <translation>Mac hardware acceleration</translation>
++ <translation>Mac Hardware Acceleration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="643"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="842"/>
+ <source>NVidia VDPAU acceleration</source>
+- <translation>NVidia VDPAU acceleration</translation>
++ <translation>NVidia VDPAU Acceleration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="669"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="868"/>
+ <source>Standard will use ffmpeg library.</source>
+ <translation>Standard will use ffmpeg library.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="672"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="871"/>
+ <source>Mac hardware will try to use the graphics processor - this may hang or crash your Mac!</source>
+ <translation>Mac hardware will try to use the graphics processor - this may hang or crash your Mac!</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="677"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="876"/>
+ <source>VDPAU will attempt to use the graphics hardware to accelerate video decoding and playback.</source>
+ <translation>VDPAU will attempt to use the graphics hardware to accelerate video decoding and playback.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="688"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="887"/>
+ <source>VAAPI will attempt to use the graphics hardware to accelerate video decoding. REQUIRES OPENGL PAINTER.</source>
+ <translation>VAAPI will attempt to use the graphics hardware to accelerate video decoding. REQUIRES OPENGL PAINTER.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="706"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="920"/>
+ <source>Linear blend</source>
+- <translation>Linear blend</translation>
++ <translation>Linear Blend</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="708"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="922"/>
+ <source>Kernel</source>
+ <translation>Kernel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="710"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="924"/>
+ <source>Kernel (2x)</source>
+ <translation>Kernel (2x)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="712"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="926"/>
+ <source>Greedy HighMotion</source>
+ <translation>Greedy HighMotion</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="714"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="928"/>
+ <source>Greedy HighMotion (2x)</source>
+ <translation>Greedy HighMotion (2x)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="716"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="930"/>
+ <source>Yadif</source>
+ <translation>Yadif</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="718"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="932"/>
+ <source>Yadif (2x)</source>
+ <translation>Yadif (2x)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="720"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="934"/>
+ <source>Bob (2x)</source>
+ <translation>Bob (2x)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="722"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="936"/>
+ <source>One field</source>
+- <translation>One field</translation>
++ <translation>One Field</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="724"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="938"/>
+ <source>Interlaced (2x)</source>
+ <translation>Interlaced (2x)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="726"/>
+- <source>Linear blend (HW)</source>
+- <translation>Linear blend (HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="728"/>
+- <source>Kernel (HW)</source>
+- <translation>Kernel (HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="730"/>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="742"/>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="754"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="956"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="968"/>
+ <source>Bob (2x, HW)</source>
+ <translation>Bob (2x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="732"/>
+- <source>One field (HW)</source>
+- <translation>One field (HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="734"/>
+- <source>Kernel (2x, HW)</source>
+- <translation>Kernel (2x, HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="736"/>
+- <source>Linear blend (2x, HW)</source>
+- <translation>Linear blend (2x, HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1253"/>
+- <source>This video renderer uses OpenGL for scaling and color conversion. It uses faster OpenGL functionality when available but at the expense of picture controls and GPU based deinterlacing.</source>
+- <translation>This video renderer uses OpenGL for scaling and color conversion. It uses faster OpenGL functionality when available but at the expense of picture controls and GPU based deinterlacing.</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1340"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1683"/>
+ <source>This deinterlacer attempts to synchronize with interlaced displays whose size and refresh rate exactly match the video source. It has low CPU requirements.</source>
+ <translation>This deinterlacer attempts to synchronize with interlaced displays whose size and refresh rate exactly match the video source. It has low CPU requirements.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1033"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1306"/>
+ <source>High Quality</source>
+ <comment>Sample: high quality</comment>
+ <translation>High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1043"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1317"/>
+ <source>Normal</source>
+ <comment>Sample: average quality</comment>
+ <translation>Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1053"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1328"/>
+ <source>Slim</source>
+ <comment>Sample: low CPU usage</comment>
+ <translation>Slim</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1066"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1341"/>
+ <source>VDPAU High Quality</source>
+ <comment>Sample: VDPAU high quality</comment>
+ <translation>VDPAU High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1074"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1350"/>
+ <source>VDPAU Normal</source>
+ <comment>Sample: VDPAU average quality</comment>
+ <translation>VDPAU Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1086"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1363"/>
+ <source>VDPAU Slim</source>
+ <comment>Sample: VDPAU low power GPU</comment>
+ <translation>VDPAU Slim</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1208"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1483"/>
++ <source>MediaCodec Normal</source>
++ <comment>Sample: MediaCodec Normal</comment>
++ <translation>MediaCodec Normal</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1496"/>
++ <source>VAAPI2 Normal</source>
++ <comment>Sample: VAAPI2 Normal</comment>
++ <translation>VAAPI2 Normal</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1523"/>
+ <source>Video rendering method</source>
+- <translation>Video rendering method</translation>
++ <translation>Video Rendering Method</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1215"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1530"/>
+ <source>Render video offscreen. Used internally.</source>
+ <translation>Render video offscreen. Used internally.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1219"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1534"/>
+ <source>Use X11 pixel copy to render video. This is not recommended if any other option is available. The video will not be scaled to fit the screen. This will work with all X11 servers, local and remote.</source>
+ <translation>Use X11 pixel copy to render video. This is not recommended if any other option is available. The video will not be scaled to fit the screen. This will work with all X11 servers, local and remote.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1226"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1541"/>
+ <source>Use X11 shared memory pixel transfer to render video. This is only recommended over the X11 pixel copy renderer. The video will not be scaled to fit the screen. This works with most local X11 servers.</source>
+ <translation>Use X11 shared memory pixel transfer to render video. This is only recommended over the X11 pixel copy renderer. The video will not be scaled to fit the screen. This works with most local X11 servers.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1233"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1548"/>
+ <source>This is the standard video renderer for X11 systems. It uses XVideo hardware assist for scaling, color conversion. If the hardware offers picture controls the renderer supports them.</source>
+ <translation>This is the standard video renderer for X11 systems. It uses XVideo hardware assist for scaling, color conversion. If the hardware offers picture controls the renderer supports them.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1239"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1554"/>
+ <source>Windows video renderer based on Direct3D. Requires video card compatible with Direct3D 9. This is the preferred renderer for current Windows systems.</source>
+ <translation>Windows video renderer based on Direct3D. Requires video card compatible with Direct3D 9. This is the preferred renderer for current Windows systems.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="738"/>
+- <source>Interlaced (2x, HW)</source>
+- <translation>Interlaced (2x, HW)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="644"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="843"/>
+ <source>VAAPI acceleration</source>
+- <translation>VAAPI acceleration</translation>
++ <translation>VAAPI Acceleration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="645"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="844"/>
+ <source>Windows hardware acceleration</source>
+- <translation>Windows hardware acceleration</translation>
++ <translation>Windows Hardware Acceleration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="646"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="845"/>
+ <source>Mac VDA hardware acceleration</source>
+- <translation>Mac VDA hardware acceleration</translation>
++ <translation>Mac VDA Hardware Acceleration</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="846"/>
++ <source>Android MediaCodec decoder</source>
++ <translation>Android MediaCodec Decoder</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="847"/>
++ <source>VAAPI2 acceleration</source>
++ <translation>VAAPI2 Acceleration</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="661"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="860"/>
+ <source>Processing method used to decode video.</source>
+ <translation>Processing method used to decode video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="682"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="881"/>
+ <source>DXVA2 will use the graphics hardware to accelerate video decoding and playback (requires Windows Vista or later).</source>
+ <translation>DXVA2 will use the graphics hardware to accelerate video decoding and playback (requires Windows Vista or later).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="693"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="892"/>
+ <source>VDA will attempt to use the graphics hardware to accelerate video decoding. (H264 only, requires Mac OS 10.6.3)</source>
+ <translation>VDA will attempt to use the graphics hardware to accelerate video decoding. (H264 only, requires Mac OS 10.6.3)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="740"/>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="752"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="898"/>
++ <source>Openmax will use the graphics hardware to accelerate video decoding on Raspberry Pi. </source>
++ <translation>Openmax will use the graphics hardware to accelerate video decoding on Raspberry Pi. </translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="903"/>
++ <source>Mediacodec will use the graphics hardware to accelerate video decoding on Android. </source>
++ <translation>Mediacodec will use the graphics hardware to accelerate video decoding on Android.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="908"/>
++ <source>VAAPI2 is a new implementation of VAAPI to will use the graphics hardware to accelerate video decoding on Intel CPUs. </source>
++ <translation>VAAPI2 is a new implementation of VAAPI to will use the graphics hardware to accelerate video decoding on Intel CPUs.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="940"/>
++ <source>Linear blend (HW-GL)</source>
++ <translation>Linear Blend (HW-GL)</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="942"/>
++ <source>Kernel (HW-GL)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="944"/>
++ <source>Bob (2x, HW-GL)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="946"/>
++ <source>One field (HW-GL)</source>
++ <translation>One Field (HW-GL)</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="948"/>
++ <source>Kernel (2x, HW-GL)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="950"/>
++ <source>Linear blend (2x, HW-GL)</source>
++ <translation>Linear Blend (2x, HW-GL)</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="952"/>
++ <source>Interlaced (2x, HW-GL)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="954"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="966"/>
+ <source>One Field (1x, HW)</source>
+ <translation>One Field (1x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="744"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="958"/>
+ <source>Temporal (1x, HW)</source>
+ <translation>Temporal (1x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="746"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="960"/>
+ <source>Temporal (2x, HW)</source>
+ <translation>Temporal (2x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="748"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="962"/>
+ <source>Advanced (1x, HW)</source>
+ <translation>Advanced (1x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="750"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="964"/>
+ <source>Advanced (2x, HW)</source>
+ <translation>Advanced (2x, HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="757"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="971"/>
+ <source>Advanced (HW)</source>
+ <translation>Advanced (HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="759"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="973"/>
+ <source>Fast (HW)</source>
+ <translation>Fast (HW)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="761"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="975"/>
+ <source>Line double (HW)</source>
+- <translation>Line double (HW)</translation>
++ <translation>Line Double (HW)</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="979"/>
++ <source>Advanced (HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="981"/>
++ <source>Bob (HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="983"/>
++ <source>Weave (HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="985"/>
++ <source>Motion Adaptive (HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="987"/>
++ <source>Motion Compensated (HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="989"/>
++ <source>Advanced (2x, HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="991"/>
++ <source>Bob (2x, HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="993"/>
++ <source>Weave (2x, HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="995"/>
++ <source>Motion Adaptive (2x, HW-VA)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="997"/>
++ <source>Motion Compensated (2x, HW-VA)</source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1097"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1374"/>
+ <source>VDA High Quality</source>
+ <comment>Sample: VDA high quality</comment>
+ <translation>VDA High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1109"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1387"/>
+ <source>VDA Normal</source>
+ <comment>Sample: VDA average quality</comment>
+ <translation>VDA Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1121"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1400"/>
+ <source>VDA Slim</source>
+ <comment>Sample: VDA low power GPU</comment>
+ <translation>VDA Slim</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1136"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1415"/>
+ <source>OpenGL High Quality</source>
+ <comment>Sample: OpenGL high quality</comment>
+ <translation>OpenGL High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1144"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1425"/>
+ <source>OpenGL Normal</source>
+ <comment>Sample: OpenGL average quality</comment>
+ <translation>OpenGL Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1152"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1434"/>
+ <source>OpenGL Slim</source>
+ <comment>Sample: OpenGL low power GPU</comment>
+ <translation>OpenGL Slim</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1163"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1445"/>
+ <source>VAAPI Normal</source>
+ <comment>Sample: VAAPI average quality</comment>
+ <translation>VAAPI Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1178"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1461"/>
++ <source>OpenMAX High Quality</source>
++ <comment>Sample: OpenMAX High Quality</comment>
++ <translation>OpenMAX High Quality</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1472"/>
+ <source>OpenMAX Normal</source>
+ <comment>Sample: OpenMAX Normal</comment>
+ <translation>OpenMAX Normal</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1246"/>
+- <source>This video renderer uses OpenGL for scaling and color conversion with full picture controls. The GPU can be used for deinterlacing. This requires a faster GPU than XVideo.</source>
+- <translation>This video renderer uses OpenGL for scaling and color conversion with full picture controls. The GPU can be used for deinterlacing. This requires a faster GPU than XVideo.</translation>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1561"/>
++ <source>Video is converted to an intermediate format by the CPU (UYVY) before OpenGL is used for color conversion, scaling, picture controls and optionally deinterlacing. Processing is balanced between the CPUand GPU.</source>
++ <translation>Video is converted to an intermediate format by the CPU (UYVY) before OpenGL is used for color conversion, scaling, picture controls and optionally deinterlacing. Processing is balanced between the CPU and GPU.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1569"/>
++ <source>OpenGL is used for scaling and color conversion. It uses faster OpenGL functionality when available but at the expense of picture controls and GPU based deinterlacing.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1576"/>
++ <source>OpenGL is used for all color conversion, scaling, picture controls and optionally deinterlacing. CPU load is low but a more powerful GPU is needed for deinterlacing.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1584"/>
++ <source>This renderer uses a higher quality CPU conversion for interlaced content before using OpenGL for color conversion, scaling, picture controls and optionally deinterlacing. CPU load is higher particularly on embedded systems.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1593"/>
++ <source>All video processing is performed by the CPU. OpenGL is used for display only. Does not support picture controls or GPU deinterlacing. Requires a significantly faster CPU.</source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1260"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1601"/>
+ <source>This is the only video renderer for NVidia VDPAU decoding.</source>
+ <translation>This is the only video renderer for NVidia VDPAU decoding.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1266"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1607"/>
+ <source>This video renderer uses VAAPI for video decoding and OpenGL for scaling and color conversion.</source>
+ <translation>This video renderer uses VAAPI for video decoding and OpenGL for scaling and color conversion.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1302"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1641"/>
+ <source>This deinterlacer requires the display to be capable of twice the frame rate as the source video.</source>
+ <translation>This deinterlacer requires the display to be capable of twice the frame rate as the source video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1307"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1646"/>
+ <source>Perform no deinterlacing.</source>
+ <translation>Perform no deinterlacing.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1308"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1647"/>
+ <source>Use this with an interlaced display whose resolution exactly matches the video size. This is incompatible with MythTV zoom modes.</source>
+ <translation>Use this with an interlaced display whose resolution exactly matches the video size. This is incompatible with MythTV zoom modes.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1313"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1652"/>
+ <source>Shows only one of the two fields in the frame. This looks good when displaying a high motion 1080i video on a 720p display.</source>
+ <translation>Shows only one of the two fields in the frame. This looks good when displaying a high motion 1080i video on a 720p display.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1318"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1657"/>
+ <source>Shows one field of the frame followed by the other field displaced vertically.</source>
+ <translation>Shows one field of the frame followed by the other field displaced vertically.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1323"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1662"/>
+ <source>Blends the odd and even fields linearly into one frame.</source>
+ <translation>Blends the odd and even fields linearly into one frame.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1326"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1665"/>
+ <source>This filter disables deinterlacing when the two fields are similar, and performs linear deinterlacing otherwise.</source>
+ <translation>This filter disables deinterlacing when the two fields are similar, and performs linear deinterlacing otherwise.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1330"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1669"/>
+ <source>(Hardware Accelerated)</source>
+ <translation>(Hardware Accelerated)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1332"/>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1336"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1671"/>
++ <source>(VAAPI Hardware Accelerated)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1673"/>
++ <source>(OpenGL Hardware Accelerated)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1675"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1679"/>
+ <source>This deinterlacer uses several fields to reduce motion blur. It has increased CPU requirements.</source>
+ <translation>This deinterlacer uses several fields to reduce motion blur. It has increased CPU requirements.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1345"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1688"/>
+ <source>This deinterlacer uses several fields to reduce motion blur. </source>
+ <translation>This deinterlacer uses several fields to reduce motion blur. </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1348"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1691"/>
+ <source>This deinterlacer uses multiple fields to reduce motion blur and smooth edges. </source>
+ <translation>This deinterlacer uses multiple fields to reduce motion blur and smooth edges. </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1405"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1695"/>
++ <source>Use the most advanced hardware deinterlacing algorithm available. </source>
++ <translation>Use the most advanced hardware deinterlacing algorithm available.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1698"/>
++ <source>Use the weave deinterlacing algorithm. </source>
++ <translation>Use the weave deinterlacing algorithm.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1701"/>
++ <source>Use the motion adaptive deinterlacing algorithm. </source>
++ <translation>Use the motion adaptive deinterlacing algorithm.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1704"/>
++ <source>Use the motion compensated deinterlacing algorithm. </source>
++ <translation>Use the motion compensated deinterlacing algorithm.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1781"/>
+ <source>&apos;%1&apos; has not been documented yet.</source>
+ <translation>&apos;%1&apos; has not been documented yet.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1427"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1801"/>
+ <source>OSD rendering method</source>
+- <translation>OSD rendering method</translation>
++ <translation>OSD Rendering Method</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1433"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1807"/>
+ <source>Render the OSD using the XVideo chromakey feature.This renderer does not alpha blend but is the fastest OSD renderer for XVideo.</source>
+ <translation>Render the OSD using the XVideo chromakey feature.This renderer does not alpha blend but is the fastest OSD renderer for XVideo.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1437"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1811"/>
+ <source>Note: nVidia hardware after the 5xxx series does not have XVideo chromakey support.</source>
+ <translation>Note: nVidia hardware after the 5xxx series does not have XVideo chromakey support.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1444"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1818"/>
+ <source>Software OSD rendering uses your CPU to alpha blend the OSD.</source>
+ <translation>Software OSD rendering uses your CPU to alpha blend the OSD.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1450"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1824"/>
+ <source>Uses OpenGL to alpha blend the OSD onto the video.</source>
+ <translation>Uses OpenGL to alpha blend the OSD onto the video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1457"/>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1830"/>
++ <source>Uses OpenGL in a separate thread to overlay the OSD onto the video.</source>
++ <translation>Use OpenGL in a separate thread to overlay the OSD onto the video.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videodisplayprofile.cpp" line="1837"/>
+ <source>Uses OpenMAX to alpha blend the OSD onto the video.</source>
+ <translation>Uses OpenMAX to alpha blend the OSD onto the video.</translation>
+ </message>
+@@ -18288,317 +18549,336 @@
+ <translation>Progressive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="194"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="193"/>
+ <source>Top Left</source>
+ <translation>Top Left</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="195"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="194"/>
+ <source>Bottom Left</source>
+ <translation>Bottom Left</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="196"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="195"/>
+ <source>Top Right</source>
+ <translation>Top Right</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="197"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="196"/>
+ <source>Bottom Right</source>
+ <translation>Bottom Right</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="210"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="208"/>
+ <source>4:3</source>
+ <translation>4:3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="211"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="209"/>
+ <source>14:9</source>
+ <translation>14:9</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="212"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="210"/>
+ <source>16:9</source>
+ <translation>16:9</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="213"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="211"/>
+ <source>2.35:1</source>
+ <translation>2.35:1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="225"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="222"/>
+ <source>Black</source>
+ <translation>Black</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="228"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="225"/>
+ <source>Gray</source>
+ <translation>Gray</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="274"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="269"/>
+ <source>Half</source>
+ <translation>Half</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="275"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="270"/>
+ <source>Full</source>
+ <translation>Full</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="277"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="272"/>
+ <source>H.Stretch</source>
+ <translation>H.Stretch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="279"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="274"/>
+ <source>V.Stretch</source>
+ <translation>V.Stretch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="281"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="276"/>
+ <source>V.Fill</source>
+ <translation>V.Fill</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="283"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="278"/>
+ <source>H.Fill</source>
+ <translation>H.Fill</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="288"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="283"/>
+ <source>Auto Detect (Default Off)</source>
+ <translation>Auto Detect (Default Off)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="291"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="286"/>
+ <source>Auto Detect (Default Half)</source>
+ <translation>Auto Detect (Default Half)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="314"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="308"/>
+ <source>Studio Levels</source>
+ <translation>Studio Levels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videoouttypes.h" line="316"/>
++ <location filename="../libs/libmythtv/videoouttypes.h" line="310"/>
+ <source>Volume</source>
+ <translation>Volume</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="130"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="142"/>
+ <source>Max recordings</source>
+- <translation>Max recordings</translation>
++ <translation>Max Recordings</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="202"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="232"/>
+ <source>Listings grabber</source>
+- <translation>Listings grabber</translation>
++ <translation>Listings Grabber</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="213"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="371"/>
+ <source>Network ID</source>
+ <translation>Network ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="226"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="241"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="170"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="384"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="398"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="243"/>
+ <source>Channel frequency table</source>
+- <translation>Channel frequency table</translation>
++ <translation>Channel Frequency Table</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="232"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="390"/>
+ <source>Use default unless this source uses a different frequency table than the system wide table defined in the General settings.</source>
+ <translation>Use default unless this source uses a different frequency table than the system wide table defined in the General settings.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="337"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="494"/>
+ <source>User ID</source>
+ <translation>User ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="505"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="662"/>
+ <source>Use only the transmitted guide data.</source>
+ <translation>Use only the transmitted guide data.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="509"/>
+- <source>This will usually only work with ATSC or DVB channels,</source>
+- <translation>This will usually only work with ATSC or DVB channels,</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="684"/>
++ <source>Do not configure a grabber</source>
++ <translation>Do Not Configure a Grabber</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="513"/>
+- <source>and generally provides data only for the next few days.</source>
+- <translation>and generally provides data only for the next few days.</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="244"/>
++ <source>North America (SchedulesDirect.org) (Internal)</source>
++ <translation>North America (SchedulesDirect.org) (Internal)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="533"/>
+- <source>Do not configure a grabber</source>
+- <translation>Do not configure a grabber</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="145"/>
++ <source>Maximum number of simultaneous recordings MythTV will attempt using this device. If set to a value other than 1, MythTV can sometimes record multiple programs on the same multiplex or overlapping copies of the same program on a single channel.</source>
++ <translation>Maximum number of simultaneous recordings MythTV will attempt using this device. If set to a value other than 1, MythTV can sometimes record multiple programs on the same multiplex or overlapping copies of the same program on a single channel.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="564"/>
+- <source>North America (SchedulesDirect.org) (Internal)</source>
+- <translation>North America (SchedulesDirect.org) (Internal)</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="161"/>
++ <source>Schedule as group</source>
++ <translation>Schedule as Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="568"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="248"/>
+ <source>Transmitted guide only (EIT)</source>
+- <translation>Transmitted guide only (EIT)</translation>
++ <translation>Transmitted Guide Only (EIT)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="570"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="250"/>
+ <source>No grabber</source>
+- <translation>No grabber</translation>
++ <translation>No Grabber</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="664"/>
++ <source>This will usually only work with ATSC or DVB channels, and generally provides data only for the next few days.</source>
++ <translation>This will usually only work with ATSC or DVB channels, and generally provides data only for the next few days.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="747"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="786"/>
+ <source>Video device</source>
+- <translation>Video device</translation>
++ <translation>Video Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="858"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="904"/>
+ <source>VBI device</source>
+- <translation>VBI device</translation>
++ <translation>VBI Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="948"/>
+- <source>Audio device</source>
+- <translation>Audio device</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="984"/>
++ <source>Specify the command to run, with any needed arguments.</source>
++ <translation>Specify the command to run, with any needed arguments.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="958"/>
+ <location filename="../libs/libmythtv/videosource.cpp" line="1008"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3073"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3110"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3121"/>
++ <source>Audio device</source>
++ <translation>Audio Device</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1018"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1066"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2760"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2805"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2816"/>
+ <source>(None)</source>
+ <translation>(None)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1022"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1080"/>
+ <source>Do not adjust volume</source>
+- <translation>Do not adjust volume</translation>
++ <translation>Do Not Adjust Volume</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1024"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1082"/>
+ <source>Enable this option for budget BT878 based DVB-T cards such as the AverTV DVB-T which require the audio volume to be left alone.</source>
+ <translation>Enable this option for budget BT878 based DVB-T cards such as the AverTV DVB-T which require the audio volume to be left alone.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1039"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1096"/>
+ <source>When you change this setting, the text below should change to the name and type of your card. If the card cannot be opened, an error message will be displayed.</source>
+ <translation>When you change this setting, the text below should change to the name and type of your card. If the card cannot be opened, an error message will be displayed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1079"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1526"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1744"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1892"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1136"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1703"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1835"/>
+ <source>Warning: already in use</source>
+- <translation>Warning: already in use</translation>
++ <translation>Warning: Already in Use</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1107"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1164"/>
+ <source>Subtype</source>
+ <translation>Subtype</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1116"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1174"/>
+ <source>Frontend ID</source>
+ <translation>Frontend ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1127"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1186"/>
+ <source>Wait for SEQ start header.</source>
+- <translation>Wait for SEQ start header.</translation>
++ <translation>Wait for SEQ Start Header</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1142"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1201"/>
+ <source>Open DVB card on demand</source>
+- <translation>Open DVB card on demand</translation>
++ <translation>Open DVB Card on Demand</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1190"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1248"/>
+ <source>GUID</source>
+ <translation>GUID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1215"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1272"/>
+ <source>Cable box model</source>
+- <translation>Cable box model</translation>
++ <translation>Cable Box Model</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1815"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1432"/>
++ <source>Use HDHomeRun %1 (%2 %3)</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1436"/>
++ <source>If enabled, use tuners from this HDHomeRun device.</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1775"/>
+ <source>URL of M3U containing RTSP/RTP/UDP channel URLs.</source>
+ <translation>URL of M3U containing RTSP/RTP/UDP channel URLs.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2994"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2681"/>
+ <source>DVB-T/S/C, ATSC or ISDB-T tuner card</source>
+- <translation>DVB-T/S/C, ATSC or ISDB-T tuner card</translation>
++ <translation>DVB-T/S/C, ATSC or ISDB-T Tuner Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3002"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2689"/>
+ <source>HD-PVR H.264 encoder</source>
+- <translation>HD-PVR H.264 encoder</translation>
++ <translation>HD-PVR H.264 Encoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3008"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2695"/>
+ <source>HDHomeRun networked tuner</source>
+- <translation>HDHomeRun networked tuner</translation>
++ <translation>HDHomeRun Networked Tuner</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3023"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2710"/>
+ <source>Ceton Cablecard tuner</source>
+- <translation>Ceton Cablecard tuner</translation>
++ <translation>Ceton Cablecard Tuner</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3027"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2714"/>
+ <source>IPTV recorder</source>
+- <translation>IPTV recorder</translation>
++ <translation>IPTV Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3033"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2720"/>
+ <source>Analog to MPEG-2 encoder card (PVR-150/250/350, etc)</source>
+- <translation>Analog to MPEG-2 encoder card (PVR-150/250/350, etc)</translation>
++ <translation>Analog to MPEG-2 Encoder Card (PVR-150/250/350, etc)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3036"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2723"/>
+ <source>Analog to MJPEG encoder card (Matrox G200, DC10, etc)</source>
+- <translation>Analog to MJPEG encoder card (Matrox G200, DC10, etc)</translation>
++ <translation>Analog to MJPEG Encoder Card (Matrox G200, DC10, etc)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3038"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2725"/>
+ <source>Analog to MPEG-4 encoder (Plextor ConvertX USB, etc)</source>
+- <translation>Analog to MPEG-4 encoder (Plextor ConvertX USB, etc)</translation>
++ <translation>Analog to MPEG-4 Encoder (Plextor ConvertX USB, etc)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3041"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2728"/>
+ <source>Analog capture card</source>
+- <translation>Analog capture card</translation>
++ <translation>Analog Capture Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3179"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2874"/>
+ <source>Generic</source>
+ <translation>Generic</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1233"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1290"/>
+ <source>Choose the model that most closely resembles your set top box. Depending on firmware revision SA4200HD may work better for a SA3250HD box.</source>
+ <translation>Choose the model that most closely resembles your set top box. Depending on firmware revision SA4200HD may work better for a SA3250HD box.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="216"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="374"/>
+ <source>If your provider has asked you to configure a specific network identifier (Network_ID), enter it here. Leave it at -1 otherwise.</source>
+ <extracomment>Network_ID is the name of an identifier in the DVB&apos;s Service Information standard specification.</extracomment>
+ <translation>If your provider has asked you to configure a specific network identifier (Network_ID), enter it here. Leave it at -1 otherwise.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="474"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="626"/>
+ <source>You MUST run &apos;mythfilldatabase --manual&apos; the first time,
+ instead of just &apos;mythfilldatabase&apos;.
+ Your grabber does not provide channel numbers, so you have to set them manually.</source>
+@@ -18607,536 +18887,516 @@
+ Your grabber does not provide channel numbers, so you have to set them manually.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="483"/>
+- <source>Warning.</source>
+- <translation>Warning.</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1037"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1094"/>
+ <source>DVB device</source>
+- <translation>DVB device</translation>
++ <translation>DVB Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1216"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1273"/>
+ <source>Motorola Generic</source>
+ <translation>Motorola Generic</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1217"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1274"/>
+ <source>SA/Cisco Generic</source>
+ <translation>SA/Cisco Generic</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1274"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1331"/>
+ <source>Connection Type</source>
+ <translation>Connection Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1275"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1332"/>
+ <source>Point to Point</source>
+ <translation>Point to Point</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1287"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1344"/>
+ <source>Speed</source>
+ <translation>Speed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1288"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1345"/>
+ <source>100Mbps</source>
+ <translation>100Mbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1289"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1346"/>
+ <source>200Mbps</source>
+ <translation>200Mbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1290"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1347"/>
+ <source>400Mbps</source>
+ <translation>400Mbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1291"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1348"/>
+ <source>800Mbps</source>
+ <translation>800Mbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1340"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1596"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1557"/>
+ <source>IP Address</source>
+ <translation>IP Address</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1376"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1628"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1588"/>
+ <source>Tuner</source>
+ <translation>Tuner</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1813"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1773"/>
+ <source>M3U URL</source>
+ <translation>M3U URL</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1850"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1793"/>
+ <source>ASI device</source>
+- <translation>ASI device</translation>
++ <translation>ASI Device</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1909"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1852"/>
+ <source>Warning: unable to open</source>
+- <translation>Warning: unable to open</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2045"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2245"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4283"/>
+- <source>Recorder Options</source>
+- <translation>Recorder Options</translation>
++ <translation>Warning: Unable to Open</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2787"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2478"/>
+ <source>Capture Card Setup</source>
+ <translation>Capture Card Setup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2984"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2671"/>
+ <source>Card type</source>
+- <translation>Card type</translation>
++ <translation>Card Type</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2985"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2672"/>
+ <source>Change the cardtype to the appropriate type for the capture card you are configuring.</source>
+- <translation>Change the cardtype to the appropriate type for the capture card you are configuring.</translation>
++ <translation>Change the card type to the appropriate type for the capture card you are configuring.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3018"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2705"/>
+ <source>FireWire cable box</source>
+- <translation>FireWire cable box</translation>
++ <translation>FireWire Cable Box</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3045"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2732"/>
+ <source>DVEO ASI recorder</source>
+- <translation>DVEO ASI recorder</translation>
++ <translation>DVEO ASI Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3109"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2804"/>
+ <source>Video source</source>
+- <translation>Video source</translation>
++ <translation>Video Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3135"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2830"/>
+ <source>Leave as &apos;Generic&apos; unless this input is shared with another device. Only one of the inputs in an input group will be allowed to record at any given time.</source>
+ <translation>Leave as &apos;Generic&apos; unless this input is shared with another device. Only one of the inputs in an input group will be allowed to record at any given time.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3258"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2955"/>
+ <source>Use quick tuning</source>
+- <translation>Use quick tuning</translation>
++ <translation>Use Quick Tuning</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3259"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2956"/>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3260"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2957"/>
+ <source>Live TV only</source>
+- <translation>Live TV only</translation>
++ <translation>Live TV Only</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3261"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2958"/>
+ <source>Always</source>
+ <translation>Always</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3280"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2975"/>
+ <source>External channel change command</source>
+- <translation>External channel change command</translation>
++ <translation>External Channel Change Command</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3282"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2977"/>
+ <source>If specified, this command will be run to change the channel for inputs which have an external tuner device such as a cable box. The first argument will be the channel number.</source>
+ <translation>If specified, this command will be run to change the channel for inputs which have an external tuner device such as a cable box. The first argument will be the channel number.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3296"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2990"/>
+ <source>Preset tuner to channel</source>
+- <translation>Preset tuner to channel</translation>
++ <translation>Preset Tuner to Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3298"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2992"/>
+ <source>Leave this blank unless you have an external tuner that is connected to the tuner input of your card. If so, you will need to specify the preset channel for the signal (normally 3 or 4).</source>
+ <translation>Leave this blank unless you have an external tuner that is connected to the tuner input of your card. If so, you will need to specify the preset channel for the signal (normally 3 or 4).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3349"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3044"/>
+ <source>Input priority</source>
+- <translation>Input priority</translation>
++ <translation>Input Priority</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3351"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3046"/>
+ <source>If the input priority is not equal for all inputs, the scheduler may choose to record a show at a later time so that it can record on an input with a higher value.</source>
+ <translation>If the input priority is not equal for all inputs, the scheduler may choose to record a show at a later time so that it can record on an input with a higher value.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3365"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3060"/>
+ <source>Schedule order</source>
+- <translation>Schedule order</translation>
++ <translation>Schedule Order</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3367"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3062"/>
+ <source>If priorities and other factors are equal the scheduler will choose the available input with the lowest, non-zero value. Setting this value to zero will make the input unavailable to the scheduler.</source>
+- <translation>If priorities and other factors are equal the scheduler will choose the available input with the lowest, non-zero value. Setting this value to zero will make the input unavailable to the scheduler.</translation>
++ <translation>If priorities and other factors are equal the scheduler will choose the available input with the lowest, non-zero value. Setting this value to zero will make the input unavailable to the scheduler.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3382"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3077"/>
+ <source>Live TV order</source>
+- <translation>Live TV order</translation>
++ <translation>Live TV Order</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3384"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3079"/>
+ <source>When entering Live TV, the available, local input with the lowest, non-zero value will be used. If no local inputs are available, the available, remote input with the lowest, non-zero value will be used. Setting this value to zero will make the input unavailable to live TV.</source>
+- <translation>When entering Live TV, the available, local input with the lowest, non-zero value will be used. If no local inputs are available, the available, remote input with the lowest, non-zero value will be used. Setting this value to zero will make the input unavailable to live TV.</translation>
++ <translation>When entering Live TV, the available, local input with the lowest, non-zero value will be used. If no local inputs are available, the available, remote input with the lowest, non-zero value will be used. Setting this value to zero will make the input unavailable to live TV.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3404"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3099"/>
+ <source>If you point your satellite dish toward DishNet&apos;s birds, you may wish to enable this feature. For best results, enable general EIT collection as well.</source>
+ <translation>If you point your satellite dish toward DishNet&apos;s birds, you may wish to enable this feature. For best results, enable general EIT collection as well.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3434"/>
+- <source>Connect source to input</source>
+- <translation>Connect source to input</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3479"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3160"/>
+ <source>Interactions between inputs</source>
+- <translation>Interactions between inputs</translation>
++ <translation>Interactions Between Inputs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3485"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3173"/>
+ <source>Create a New Input Group</source>
+ <translation>Create a New Input Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3767"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3563"/>
+ <source>(New capture card)</source>
+- <translation>(New capture card)</translation>
++ <translation>(New Capture Card)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3768"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3564"/>
+ <source>(Delete all capture cards on %1)</source>
+- <translation>(Delete all capture cards on %1)</translation>
++ <translation>(Delete All Capture Cards on %1)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3770"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3567"/>
+ <source>(Delete all capture cards)</source>
+- <translation>(Delete all capture cards)</translation>
++ <translation>(Delete All Capture Cards)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3912"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3580"/>
+ <source>(New video source)</source>
+- <translation>(New video source)</translation>
++ <translation>(New Video Source)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3913"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3581"/>
+ <source>(Delete all video sources)</source>
+- <translation>(Delete all video sources)</translation>
++ <translation>(Delete All Video Sources)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="323"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="480"/>
+ <source>Perform EIT scan</source>
+- <translation>Perform EIT scan</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="132"/>
+- <source>Maximum number of simultaneous recordings this device should make. Some digital transmitters transmit multiple programs on a multiplex, if this is set to a value greater than one MythTV can sometimes take advantage of this. If only a single program is available, setting this to 2 allows overlapping schedules to record.</source>
+- <translation>Maximum number of simultaneous recordings this device should make. Some digital transmitters transmit multiple programs on a multiplex, if this is set to a value greater than one MythTV can sometimes take advantage of this. If only a single program is available, setting this to 2 allows overlapping schedules to record.</translation>
++ <translation>Perform EIT Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="324"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="481"/>
+ <source>If enabled, program guide data for channels on this source will be updated with data provided by the channels themselves &apos;Over-the-Air&apos;.</source>
+ <translation>If enabled, program guide data for channels on this source will be updated with data provided by the channels themselves &apos;Over-the-Air&apos;.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="686"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="700"/>
+ <source>Video Source Setup</source>
+ <translation>Video Source Setup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="860"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="906"/>
+ <source>Device to read VBI (captions) from.</source>
+ <translation>Device to read VBI (captions) from.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="926"/>
+- <source>Arguments</source>
+- <translation>Arguments</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="937"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="997"/>
+ <source>File path</source>
+- <translation>File path</translation>
++ <translation>File Path</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="959"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1019"/>
+ <source>Device to read audio from, if audio is separate from the video.</source>
+ <translation>Device to read audio from, if audio is separate from the video.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="971"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1030"/>
+ <source>Signal timeout (ms)</source>
+- <translation>Signal timeout (ms)</translation>
++ <translation>Signal Timeout (ms)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="973"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1032"/>
+ <source>Maximum time (in milliseconds) MythTV waits for a signal when scanning for channels.</source>
+ <translation>Maximum time (in milliseconds) MythTV waits for a signal when scanning for channels.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="986"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1045"/>
+ <source>Tuning timeout (ms)</source>
+- <translation>Tuning timeout (ms)</translation>
++ <translation>Tuning Timeout (ms)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="988"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1047"/>
+ <source>Maximum time (in milliseconds) MythTV waits for a channel lock. For recordings, if this time is exceeded, the recording will be marked as failed.</source>
+- <translation>Maximum time (in milliseconds) MythTV waits for a channel lock. For recordings, if this time is exceeded, the recording will be marked as failed.</translation>
++ <translation>Maximum time (in milliseconds) MythTV waits for a channel lock. For recordings, if this time is exceeded, the recording will be marked as failed.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1002"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1060"/>
+ <source>Force audio sampling rate</source>
+- <translation>Force audio sampling rate</translation>
++ <translation>Force Audio Sampling Rate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1004"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1062"/>
+ <source>If non-zero, override the audio sampling rate in the recording profile when this card is used. Use this if your capture card does not support all of the standard rates.</source>
+- <translation>If non-zero, override the audio sampling rate in the recording profile when this card is used. Use this if your capture card does not support all of the standard rates.</translation>
++ <translation>If non-zero, override the audio sampling rate in the recording profile when this card is used. Use this if your capture card does not support all of the standard rates.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1130"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1189"/>
+ <source>If enabled, drop packets from the start of a DVB recording until a sequence start header is seen.</source>
+ <translation>If enabled, drop packets from the start of a DVB recording until a sequence start header is seen.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1145"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1204"/>
+ <source>If enabled, only open the DVB card when required, leaving it free for other programs at other times.</source>
+ <translation>If enabled, only open the DVB card when required, leaving it free for other programs at other times.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1157"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1216"/>
+ <source>Use DVB card for active EIT scan</source>
+- <translation>Use DVB card for active EIT scan</translation>
++ <translation>Use DVB Card for Active EIT Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1160"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1219"/>
+ <source>If enabled, activate active scanning for program data (EIT). When this option is enabled the DVB card is constantly in-use.</source>
+ <translation>If enabled, activate active scanning for program data (EIT). When this option is enabled the DVB card is constantly in-use.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1173"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1232"/>
+ <source>DVB tuning delay (ms)</source>
+- <translation>DVB tuning delay (ms)</translation>
++ <translation>DVB Tuning Delay (ms)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1176"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1235"/>
+ <source>Some Linux DVB drivers, in particular for the Hauppauge Nova-T, require that we slow down the tuning process by specifying a delay (in milliseconds).</source>
+ <translation>Some Linux DVB drivers, in particular for the Hauppauge Nova-T, require that we slow down the tuning process by specifying a delay (in milliseconds).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1471"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1707"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1666"/>
+ <source>Available devices</source>
+- <translation>Available devices</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1473"/>
+- <source>Device ID and Tuner Number of available HDHomeRun devices.</source>
+- <translation>Device ID and Tuner Number of available HDHomeRun devices.</translation>
++ <translation>Available Devices</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1597"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1558"/>
+ <source>Device IP or ID of a VBox device. eg. &apos;192.168.1.100&apos; or &apos;vbox_3718&apos;</source>
+ <translation>Device IP or ID of a VBox device. eg. &apos;192.168.1.100&apos; or &apos;vbox_3718&apos;</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1629"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1589"/>
+ <source>Number and type of the tuner to use. eg &apos;1-DVBT/T2&apos;.</source>
+ <translation>Number and type of the tuner to use. eg &apos;1-DVBT/T2&apos;.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1709"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1668"/>
+ <source>Device IP or ID, tuner number and tuner type of available VBox devices.</source>
+ <translation>Device IP or ID, tuner number and tuner type of available VBox devices.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2701"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1415"/>
++ <source>Use HD HomeRun for active EIT scan</source>
++ <translation>Use HD HomeRun for Active EIT Scan</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="164"/>
++ <source>Schedule all virtual inputs on this device as a group. This is more efficient than scheduling each input individually. Additional, virtual inputs will be automatically added as needed to fulfill the recording load.</source>
++ <translation>Schedule all virtual inputs on this device as a group. This is more efficient than scheduling each input individually. Additional, virtual inputs will be automatically added as needed to fulfill the recording load.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1418"/>
++ <source>If enabled, activate active scanning for program data (EIT). When this option is enabled the HD HomeRun is constantly in-use.</source>
++ <translation>If enabled, activate active scanning for program data (EIT). When this option is enabled the HD HomeRun is constantly in-use.</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2408"/>
+ <source>V4L2 encoder devices (multirec capable)</source>
+- <translation>V4L2 encoder devices (multirec capable)</translation>
++ <translation>V4L2 Encoder Devices (multirec capable)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2999"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2686"/>
+ <source>V4L2 encoder</source>
+- <translation>V4L2 encoder</translation>
++ <translation>V4L2 Encoder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3013"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2700"/>
+ <source>V@Box TV Gateway networked tuner</source>
+- <translation>V@Box TV Gateway networked tuner</translation>
++ <translation>V@Box TV Gateway Networked Tuner</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3048"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2735"/>
+ <source>Import test recorder</source>
+- <translation>Import test recorder</translation>
++ <translation>Import Test Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3049"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2736"/>
+ <source>Demo test recorder</source>
+- <translation>Demo test recorder</translation>
++ <translation>Demo Test Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3051"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2738"/>
+ <source>External (black box) recorder</source>
+- <translation>External (black box) recorder</translation>
++ <translation>External (black box) Recorder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3062"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2749"/>
+ <source>Input name</source>
+- <translation>Input name</translation>
++ <translation>Input Name</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3094"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2780"/>
+ <source>Display name (optional)</source>
+- <translation>Display name (optional)</translation>
++ <translation>Display Name (optional)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3095"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2781"/>
+ <source>This name is displayed on screen when Live TV begins and when changing the selected input or card. If you use this, make sure the information is unique for each input.</source>
+ <translation>This name is displayed on screen when Live TV begins and when changing the selected input or card. If you use this, make sure the information is unique for each input.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3133"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2828"/>
+ <source>Input group</source>
+- <translation>Input group</translation>
++ <translation>Input Group</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3262"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2959"/>
+ <source>If enabled, MythTV will tune using only the MPEG program number. The program numbers change more often than DVB or ATSC tuning parameters, so this is slightly less reliable. This will also inhibit EIT gathering during Live TV and recording.</source>
+ <translation>If enabled, MythTV will tune using only the MPEG program number. The program numbers change more often than DVB or ATSC tuning parameters, so this is slightly less reliable. This will also inhibit EIT gathering during Live TV and recording.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3401"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3096"/>
+ <source>Use DishNet long-term EIT data</source>
+- <translation>Use DishNet long-term EIT data</translation>
++ <translation>Use DishNet Long-Term EIT Data</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3487"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3175"/>
+ <source>Input groups are only needed when two or more cards share the same resource such as a FireWire card and an analog card input controlling the same set top box.</source>
+ <translation>Input groups are only needed when two or more cards share the same resource such as a FireWire card and an analog card input controlling the same set top box.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4237"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3856"/>
+ <source>Audio input</source>
+- <translation>Audio input</translation>
++ <translation>Audio Input</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="4238"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3857"/>
+ <source>If there is more than one audio input, select which one to use.</source>
+ <translation>If there is more than one audio input, select which one to use.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="123"/>
++ <location filename="../libs/libmythtv/videosource.h" line="126"/>
+ <source>Data Direct lineup</source>
+- <translation>Data Direct lineup</translation>
++ <translation>Data Direct Lineup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="133"/>
++ <location filename="../libs/libmythtv/videosource.h" line="136"/>
+ <source>Retrieve Lineups</source>
+ <translation>Retrieve Lineups</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="268"/>
++ <location filename="../libs/libmythtv/videosource.h" line="270"/>
+ <source>Video source name</source>
+- <translation>Video source name</translation>
++ <translation>Video Source Name</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="859"/>
++ <location filename="../libs/libmythtv/videosource.h" line="835"/>
+ <source>Starting channel</source>
+- <translation>Starting channel</translation>
++ <translation>Starting Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="860"/>
++ <location filename="../libs/libmythtv/videosource.h" line="836"/>
+ <source>Starting Live TV channel.</source>
+- <translation>Starting Live TV channel.</translation>
++ <translation>Starting Live TV Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.h" line="861"/>
++ <location filename="../libs/libmythtv/videosource.h" line="837"/>
+ <source>This is updated on every successful channel change.</source>
+ <translation>This is updated on every successful channel change.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="114"/>
++ <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="109"/>
+ <source>The following programs will be recorded instead:</source>
+ <translation>The following programs will be recorded instead:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="137"/>
++ <location filename="../programs/mythfrontend/viewschedulediff.cpp" line="135"/>
+ <source>Program Status</source>
+ <translation>Program Status</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtranscode/transcode.cpp" line="1552"/>
++ <location filename="../programs/mythtranscode/transcode.cpp" line="1603"/>
+ <source>%1% Completed @ %2 fps.</source>
+ <translation>%1% Completed @ %2 fps.</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/filldata.cpp" line="206"/>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="405"/>
+- <location filename="../programs/mythfilldatabase/main.cpp" line="320"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="406"/>
++ <location filename="../programs/mythfilldatabase/main.cpp" line="322"/>
+ <source>currently running.</source>
+ <translation>currently running.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="425"/>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="973"/>
+- <location filename="../programs/mythfilldatabase/main.cpp" line="363"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="426"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="978"/>
++ <location filename="../programs/mythfilldatabase/main.cpp" line="365"/>
+ <source>Successful.</source>
+ <translation>Successful.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="432"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="433"/>
+ <source>FAILED: XMLTV grabber ran but was interrupted.</source>
+ <translation>FAILED: XMLTV grabber ran but was interrupted.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="436"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="437"/>
+ <source>FAILED: XMLTV grabber returned error code %1.</source>
+ <translation>FAILED: XMLTV grabber returned error code %1.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/filldata.cpp" line="966"/>
++ <location filename="../programs/mythfilldatabase/filldata.cpp" line="971"/>
+ <source>mythfilldatabase ran, but did not insert any new data into the Guide for %1 of %2 sources. This can indicate a potential grabber failure.</source>
+ <translation>mythfilldatabase ran, but did not insert any new data into the Guide for %1 of %2 sources. This can indicate a potential grabber failure.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/main.cpp" line="359"/>
++ <location filename="../programs/mythfilldatabase/main.cpp" line="361"/>
+ <source>mythfilldatabase ran, but did not insert any new data into the Guide. This can indicate a potential problem with the XML file used for the update.</source>
+- <translation>mythfilldatabase ran, but did not insert any new data into the Guide. This can indicate a potential problem with the XML file used for the update.</translation>
++ <translation>mythfilldatabase ran, but did not insert any new data into the Guide. This can indicate a potential problem with the XML file used for the update.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="295"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="292"/>
+ <source>Stereo</source>
+ <translation>Stereo</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="443"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="440"/>
+ <source>Audio device is invalid or not useable.</source>
+ <translation>Audio device is invalid or not useable.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/programinfo.cpp" line="3126"/>
++ <location filename="../libs/libmyth/programinfo.cpp" line="3313"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+@@ -19146,50 +19406,45 @@
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="759"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="842"/>
+ <source>Use &apos;mythfilldatabase&apos; or the name of a custom script that will populate the program guide info for all your video sources.</source>
+ <translation>Use &apos;mythfilldatabase&apos; or the name of a custom script that will populate the program guide info for all your video sources.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="445"/>
+- <source>Warning</source>
+- <translation>Warning</translation>
+- </message>
+- <message>
+ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="37"/>
+ <source>Media Monitor</source>
+ <translation>Media Monitor</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="267"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="282"/>
+ <source>Unable to open or close the empty drive %1</source>
+ <translation>Unable to open or close the empty drive %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/mythmediamonitor.cpp" line="269"/>
++ <location filename="../libs/libmyth/mythmediamonitor.cpp" line="284"/>
+ <source>You may have to use the eject button under its tray</source>
+ <translation>You may have to use the eject button under its tray</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtranscode/main.cpp" line="83"/>
++ <location filename="../programs/mythtranscode/main.cpp" line="81"/>
+ <source>Generating Keyframe Index</source>
+ <translation>Generating Keyframe Index</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtranscode/main.cpp" line="89"/>
++ <location filename="../programs/mythtranscode/main.cpp" line="87"/>
+ <source>Transcode Completed</source>
+ <translation>Transcode Completed</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtranscode/main.cpp" line="97"/>
+- <location filename="../programs/mythtranscode/transcode.cpp" line="225"/>
++ <location filename="../programs/mythtranscode/main.cpp" line="96"/>
++ <location filename="../programs/mythtranscode/transcode.cpp" line="238"/>
+ <source>Completed</source>
+ <translation>Completed</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtranscode/main.cpp" line="871"/>
+ <source>Job errored, unable to find Program Info for job</source>
+- <translation>Job errored, unable to find Program Info for job</translation>
++ <translation>Job Errored, Unable to Find Program Info for Job</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtranscode/main.cpp" line="1115"/>
+@@ -19199,705 +19454,734 @@
+ <message>
+ <location filename="../programs/mythtranscode/main.cpp" line="1120"/>
+ <source>Unrecoverable error</source>
+- <translation>Unrecoverable error</translation>
++ <translation>Unrecoverable Error</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="109"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="188"/>
+ <source>IP address</source>
+- <translation>IP address</translation>
++ <translation>IP Address</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="26"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="64"/>
+ <source>Enter the IP address of this machine. Use an externally accessible address (ie, not 127.0.0.1) if you are going to be running a frontend on a different machine than this one. Note, in IPv6 setups, this is still required for certain extras such as UPnP.</source>
+ <translation>Enter the IP address of this machine. Use an externally accessible address (ie, not 127.0.0.1) if you are going to be running a frontend on a different machine than this one. Note, in IPv6 setups, this is still required for certain extras such as UPnP.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="38"/>
+- <source>IPv6 address</source>
+- <translation>IPv6 address</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="65"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="101"/>
+ <source>Enter the IPv6 address of this machine. Use an externally accessible address (ie, not ::1) if you are going to be running a frontend on a different machine than this one.</source>
+ <translation>Enter the IPv6 address of this machine. Use an externally accessible address (ie, not ::1) if you are going to be running a frontend on a different machine than this one.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="144"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="171"/>
++ <source>Primary IP address / DNS name</source>
++ <translation>Primary IP Address/DNS Name</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="173"/>
++ <source>The Primary IP address of this backend server. You can select an IP address from the list or type a DNS name or host name. Other systems will contact this server using this address. If you use a host name make sure it is assigned an ip address other than 127.0.0.1 in the hosts file.</source>
++ <translation>The Primary IP address of this backend server. You can select an IP address from the list or type a DNS name or hostname. Other systems will contact this server using this address. If you use a hostname make sure it is assigned an IP address other than 127.0.0.1 in the hosts file.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="217"/>
+ <source>TV format</source>
+- <translation>TV format</translation>
++ <translation>TV Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="150"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="223"/>
+ <source>The TV standard to use for viewing TV.</source>
+ <translation>The TV standard to use for viewing TV.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="157"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="230"/>
+ <source>VBI format</source>
+- <translation>VBI format</translation>
++ <translation>VBI Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="184"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="257"/>
+ <source>Save original files after transcoding (globally)</source>
+- <translation>Save original files after transcoding (globally)</translation>
++ <translation>Save Original Files After Transcoding (Globally)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="195"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="268"/>
+ <source>Delete files slowly</source>
+- <translation>Delete files slowly</translation>
++ <translation>Delete Files Slowly</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="207"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="280"/>
+ <source>Follow symbolic links when deleting files</source>
+- <translation>Follow symbolic links when deleting files</translation>
++ <translation>Follow Symbolic Links When Deleting Files</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="237"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="310"/>
+ <source>Combination</source>
+ <translation>Combination</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="263"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="336"/>
+ <source>By default, MythTV resets the FireWire bus when a FireWire recorder stops responding to commands. If this causes problems, you can disable this behavior here.</source>
+ <translation>By default, MythTV resets the FireWire bus when a FireWire recorder stops responding to commands. If this causes problems, you can disable this behavior here.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="314"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="387"/>
+ <source>The minimum number of seconds after a recorder becomes idle to wait before MythTV begins collecting EIT listings data.</source>
+ <translation>The minimum number of seconds after a recorder becomes idle to wait before MythTV begins collecting EIT listings data.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="324"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="397"/>
+ <source>Delay between wake attempts (secs)</source>
+- <translation>Delay between wake attempts (secs)</translation>
++ <translation>Delay Between Wake Attempts (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="337"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="410"/>
+ <source>Number of times the frontend will try to wake up the master backend.</source>
+ <translation>Number of times the frontend will try to wake up the master backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="358"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="421"/>
++ <source>The command used to wake up your master backend server (e.g. wakeonlan 00:00:00:00:00:00).</source>
++ <translation>The command used to wake up your master backend server (e.g. wakeonlan 00:00:00:00:00:00).</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="431"/>
+ <source>The command used to put this slave to sleep. If set, the master backend will use this command to put this slave to sleep when it is not needed for recording.</source>
+ <translation>The command used to put this slave to sleep. If set, the master backend will use this command to put this slave to sleep when it is not needed for recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="400"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="473"/>
+ <source>Idle shutdown timeout (secs)</source>
+- <translation>Idle shutdown timeout (secs)</translation>
++ <translation>Idle Shutdown Timeout (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="413"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="486"/>
+ <source>The number of minutes the master backend waits for a recording. If the backend is idle but a recording starts within this time period, it won&apos;t shut down.</source>
+ <translation>The number of minutes the master backend waits for a recording. If the backend is idle but a recording starts within this time period, it won&apos;t shut down.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="433"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="506"/>
+ <source>Wakeup time format</source>
+- <translation>Wakeup time format</translation>
++ <translation>Wakeup Time Format</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="447"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="520"/>
+ <source>The command used to set the wakeup time (passed as $time) for the Master Backend</source>
+ <translation>The command used to set the wakeup time (passed as $time) for the Master Backend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="455"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="528"/>
+ <source>Server halt command</source>
+- <translation>Server halt command</translation>
++ <translation>Server Halt Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="457"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="530"/>
+ <source>The command used to halt the backends.</source>
+ <translation>The command used to halt the backends.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="466"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="539"/>
+ <source>A command executed before the backend would shutdown. The return value determines if the backend can shutdown. 0 - yes, 1 - restart idling, 2 - reset the backend to wait for a frontend.</source>
+ <translation>A command executed before the backend would shutdown. The return value determines if the backend can shutdown. 0 - yes, 1 - restart idling, 2 - reset the backend to wait for a frontend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="477"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="550"/>
+ <source>Block shutdown before client connected</source>
+- <translation>Block shutdown before client connected</translation>
++ <translation>Block Shutdown Before Client Connected</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="487"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="560"/>
+ <source>Startup command</source>
+- <translation>Startup command</translation>
++ <translation>Startup Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="489"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="562"/>
+ <source>This command is executed right after starting the BE. As a parameter &apos;$status&apos; is replaced by either &apos;auto&apos; if the machine was started automatically or &apos;user&apos; if a user switched it on.</source>
+ <translation>This command is executed right after starting the BE. As a parameter &apos;$status&apos; is replaced by either &apos;auto&apos; if the machine was started automatically or &apos;user&apos; if a user switched it on.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="499"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="572"/>
+ <source>Maximum simultaneous jobs on this backend</source>
+- <translation>Maximum simultaneous jobs on this backend</translation>
++ <translation>Maximum Simultaneous Jobs on This Backend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="500"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="573"/>
+ <source>The Job Queue will be limited to running this many simultaneous jobs on this backend.</source>
+ <translation>The Job Queue will be limited to running this many simultaneous jobs on this backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="520"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="593"/>
+ <source>Low</source>
+ <translation>Low</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="521"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="594"/>
+ <source>Medium</source>
+ <translation>Medium</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="592"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="665"/>
+ <source>The command to run whenever this User Job number is scheduled.</source>
+ <translation>The command to run whenever this User Job number is scheduled.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="602"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="675"/>
+ <source>User Job #%1</source>
+ <translation>User Job #%1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="640"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="713"/>
++ <source>Allow preview jobs</source>
++ <translation>Allow Preview Jobs</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="723"/>
+ <source>Transcoder command</source>
+- <translation>Transcoder command</translation>
++ <translation>Transcoder Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="642"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="725"/>
+ <source>The program used to transcode recordings. The default is &apos;mythtranscode&apos; if this setting is empty.</source>
+ <translation>The program used to transcode recordings. The default is &apos;mythtranscode&apos; if this setting is empty.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="662"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="745"/>
+ <source>Allow %1 jobs</source>
+ <translation>Allow %1 jobs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="685"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="768"/>
+ <source>If enabled, the master backend will include the list of recorded shows in the list of videos. This is mainly to accommodate UPnP players which do not allow more than 1 video section.</source>
+- <translation>If enabled, the master backend will include the list of recorded shows in the list of videos. This is mainly to accommodate UPnP players which do not allow more than 1 video section.</translation>
++ <translation>If enabled, the master backend will include the list of recorded shows in the list of videos. This is mainly to accommodate UPnP players which do not allow more than 1 video section.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="697"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="780"/>
+ <source>Recordings</source>
+ <translation>Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="698"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="781"/>
+ <source>Videos</source>
+ <translation>Videos</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="90"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="124"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="152"/>
+ <source>Unless you&apos;ve got good reason, don&apos;t change this.</source>
+ <translation>Unless you&apos;ve got good reason, don&apos;t change this.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="16"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="54"/>
+ <source>IPv4 address</source>
+- <translation>IPv4 address</translation>
++ <translation>IPv4 Address</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="98"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="160"/>
+ <source>Status port</source>
+- <translation>Status port</translation>
++ <translation>Status Port</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="100"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="162"/>
+ <source>Port on which the server will listen for HTTP requests, including backend status and MythXML requests.</source>
+ <translation>Port on which the server will listen for HTTP requests, including backend status and MythXML requests.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="111"/>
+- <source>The IP address of the master backend server. All frontend and non-master backend machines will connect to this server. If you only have one backend, this should be the same IP address as above.</source>
+- <translation>The IP address of the master backend server. All frontend and non-master backend machines will connect to this server. If you only have one backend, this should be the same IP address as above.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="132"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="205"/>
+ <source>Security PIN (required)</source>
+ <translation>Security PIN (required)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="134"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="207"/>
+ <source>PIN code required for a frontend to connect to the backend. Blank prevents all connections; 0000 allows any client to connect.</source>
+ <translation>PIN code required for a frontend to connect to the backend. Blank prevents all connections; 0000 allows any client to connect.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="161"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="234"/>
+ <source>The VBI (Vertical Blanking Interval) is used to carry Teletext or Closed Captioning data.</source>
+ <translation>The VBI (Vertical Blanking Interval) is used to carry Teletext or Closed Captioning data.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="175"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="248"/>
+ <source>Select the appropriate frequency table for your system. If you have an antenna, use a &quot;-bcast&quot; frequency.</source>
+ <translation>Select the appropriate frequency table for your system. If you have an antenna, use a &quot;-bcast&quot; frequency.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="186"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="259"/>
+ <source>If enabled and the transcoder is active, the original files will be renamed to .old once the transcoding is complete.</source>
+ <translation>If enabled and the transcoder is active, the original files will be renamed to .old once the transcoding is complete.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="197"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="270"/>
+ <source>Some filesystems use a lot of resources when deleting large files. If enabled, this option makes MythTV delete files slowly on this backend to lessen the impact.</source>
+ <translation>Some filesystems use a lot of resources when deleting large files. If enabled, this option makes MythTV delete files slowly on this backend to lessen the impact.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="209"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="282"/>
+ <source>If enabled, MythTV will follow symlinks when recordings and related files are deleted, instead of deleting the symlink and leaving the actual file.</source>
+ <translation>If enabled, MythTV will follow symlinks when recordings and related files are deleted, instead of deleting the symlink and leaving the actual file.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="219"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="292"/>
+ <source>HD ringbuffer size (kB)</source>
+- <translation>HD ringbuffer size (kB)</translation>
++ <translation>HD Ringbuffer Size (kB)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="220"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="293"/>
+ <source>The HD device ringbuffer allows the backend to weather moments of stress. The larger the ringbuffer (in kilobytes), the longer the moments of stress can be. However, setting the size too large can cause swapping, which is detrimental.</source>
+ <translation>The HD device ringbuffer allows the backend to weather moments of stress. The larger the ringbuffer (in kilobytes), the longer the moments of stress can be. However, setting the size too large can cause swapping, which is detrimental.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="233"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="306"/>
+ <source>Storage Group disk scheduler</source>
+- <translation>Storage Group disk scheduler</translation>
++ <translation>Storage Group Disk Scheduler</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="234"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="307"/>
+ <source>Balanced free space</source>
+- <translation>Balanced free space</translation>
++ <translation>Balanced Free Space</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="235"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="308"/>
+ <source>Balanced percent free space</source>
+- <translation>Balanced percent free space</translation>
++ <translation>Balanced Percent Free Space</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="236"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="309"/>
+ <source>Balanced disk I/O</source>
+- <translation>Balanced disk I/O</translation>
++ <translation>Balanced Disk I/O</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="239"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="312"/>
+ <source>This setting controls how the Storage Group scheduling code will balance new recordings across directories. &apos;Balanced Free Space&apos; is the recommended method for most users.</source>
+ <translation>This setting controls how the Storage Group scheduling code will balance new recordings across directories. &apos;Balanced Free Space&apos; is the recommended method for most users.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="249"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="322"/>
+ <source>Disable automatic database backup</source>
+- <translation>Disable automatic database backup</translation>
++ <translation>Disable Automatic Database Backup</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="251"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="324"/>
+ <source>If enabled, MythTV will not backup the database before upgrades. You should therefore have your own database backup strategy in place.</source>
+ <translation>If enabled, MythTV will not backup the database before upgrades. You should therefore have your own database backup strategy in place.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="261"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="334"/>
+ <source>Disable FireWire reset</source>
+- <translation>Disable FireWire reset</translation>
++ <translation>Disable FireWire Reset</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="275"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="348"/>
+ <source>Miscellaneous status application</source>
+- <translation>Miscellaneous status application</translation>
++ <translation>Miscellaneous Status Application</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="277"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="350"/>
+ <source>External application or script that outputs extra information for inclusion in the backend status page. See http://www.mythtv.org/wiki/Miscellaneous_Status_Information</source>
+ <translation>External application or script that outputs extra information for inclusion in the backend status page. See http://www.mythtv.org/wiki/Miscellaneous_Status_Information</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="700"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="783"/>
+ <source>Which tree to show a Windows Media Player client when it requests a list of videos.</source>
+ <translation>Which tree to show a Windows Media Player client when it requests a list of videos.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="708"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="791"/>
+ <source>Automatically update program listings</source>
+- <translation>Automatically update program listings</translation>
++ <translation>Automatically Update Program Listings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="710"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="793"/>
+ <source>If enabled, the guide data program will be run automatically.</source>
+ <translation>If enabled, the guide data program will be run automatically.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="718"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="801"/>
+ <source>Guide data program execution start</source>
+- <translation>Guide data program execution start</translation>
++ <translation>Guide Data Program Execution Start</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="720"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="803"/>
+ <source>This setting and the following one define a time period when the guide data program is allowed to run. For example, setting start to 11 and end to 13 would mean that the program would only run between 11:00 AM and 1:59 PM.</source>
+ <translation>This setting and the following one define a time period when the guide data program is allowed to run. For example, setting start to 11 and end to 13 would mean that the program would only run between 11:00 AM and 1:59 PM.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="731"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="814"/>
+ <source>Guide data program execution end</source>
+- <translation>Guide data program execution end</translation>
++ <translation>Guide Data Program Execution End</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="733"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="816"/>
+ <source>This setting and the preceding one define a time period when the guide data program is allowed to run. For example, setting start to 11 and end to 13 would mean that the program would only run between 11:00 AM and 1:59 PM.</source>
+ <translation>This setting and the preceding one define a time period when the guide data program is allowed to run. For example, setting start to 11 and end to 13 would mean that the program would only run between 11:00 AM and 1:59 PM.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="744"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="827"/>
+ <source>Run guide data program at time suggested by the grabber.</source>
+ <translation>Run guide data program at time suggested by the grabber.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="747"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="830"/>
+ <source>If enabled, allow a DataDirect guide data provider to specify the next download time in order to distribute load on their servers. Guide data program execution start/end times are also ignored.</source>
+ <translation>If enabled, allow a DataDirect guide data provider to specify the next download time in order to distribute load on their servers. Guide data program execution start/end times are also ignored.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="757"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="840"/>
+ <source>Guide data program</source>
+- <translation>Guide data program</translation>
++ <translation>Guide Data Program</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="769"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="852"/>
+ <source>Guide data arguments</source>
+- <translation>Guide data arguments</translation>
++ <translation>Guide Data Arguments</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="771"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="854"/>
+ <source>Any arguments you want passed to the guide data program.</source>
+ <translation>Any arguments you want passed to the guide data program.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="782"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="864"/>
+ <source>Program Schedule Downloading Options</source>
+ <translation>Program Schedule Downloading Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="75"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="111"/>
+ <source>Listen on Link-Local addresses</source>
+- <translation>Listen on Link-Local addresses</translation>
++ <translation>Listen on Link-local Addresses</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="77"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="113"/>
+ <source>Enable servers on this machine to listen on link-local addresses. These are auto-configured addresses and not accessible outside the local network. This must be enabled for anything requiring Bonjour to work.</source>
+ <translation>Enable servers on this machine to listen on link-local addresses. These are auto-configured addresses and not accessible outside the local network. This must be enabled for anything requiring Bonjour to work.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="287"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="360"/>
+ <source>EIT transport timeout (mins)</source>
+- <translation>EIT transport timeout (mins)</translation>
++ <translation>EIT Transport Timeout (mins)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="289"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="362"/>
+ <source>Maximum time to spend waiting (in minutes) for listings data on one digital TV channel before checking for new listings data on the next channel.</source>
+ <translation>Maximum time to spend waiting (in minutes) for listings data on one digital TV channel before checking for new listings data on the next channel.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="300"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="373"/>
+ <source>Master backend override</source>
+- <translation>Master backend override</translation>
++ <translation>Master Backend Override</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="302"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="375"/>
+ <source>If enabled, the master backend will stream and delete files if it finds them in a storage directory. Useful if you are using a central storage location, like a NFS share, and your slave backend isn&apos;t running.</source>
+ <translation>If enabled, the master backend will stream and delete files if it finds them in a storage directory. Useful if you are using a central storage location, like a NFS share, and your slave backend isn&apos;t running.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="312"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="385"/>
+ <source>Backend idle before EIT crawl (secs)</source>
+- <translation>Backend idle before EIT crawl (secs)</translation>
++ <translation>Backend Idle Before EIT Crawl (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="326"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="399"/>
+ <source>Length of time the frontend waits between tries to wake up the master backend. This should be the time your master backend needs to startup. Set to 0 to disable.</source>
+ <translation>Length of time the frontend waits between tries to wake up the master backend. This should be the time your master backend needs to startup. Set to 0 to disable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="336"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="409"/>
+ <source>Wake attempts</source>
+- <translation>Wake attempts</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="348"/>
+- <source>The command used to wake up your master backend server (e.g. sudo /etc/init.d/mythtv-backend restart).</source>
+- <translation>The command used to wake up your master backend server (e.g. sudo /etc/init.d/mythtv-backend restart).</translation>
++ <translation>Wake Attempts</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="356"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="429"/>
+ <source>Sleep command</source>
+- <translation>Sleep command</translation>
++ <translation>Sleep Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="369"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="442"/>
+ <source>The command used to wake up this slave from sleep. This setting is not used on the master backend.</source>
+ <translation>The command used to wake up this slave from sleep. This setting is not used on the master backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="378"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="451"/>
+ <source>Backend stop command</source>
+- <translation>Backend stop command</translation>
++ <translation>Backend Stop Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="380"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="453"/>
+ <source>The command used to stop the backend when running on the master backend server (e.g. sudo /etc/init.d/mythtv-backend stop)</source>
+ <translation>The command used to stop the backend when running on the master backend server (e.g. sudo /etc/init.d/mythtv-backend stop)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="389"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="462"/>
+ <source>Backend start command</source>
+- <translation>Backend start command</translation>
++ <translation>Backend Start Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="391"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="464"/>
+ <source>The command used to start the backend when running on the master backend server (e.g. sudo /etc/init.d/mythtv-backend start).</source>
+ <translation>The command used to start the backend when running on the master backend server (e.g. sudo /etc/init.d/mythtv-backend start).</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="402"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="475"/>
+ <source>The number of seconds the master backend idles before it shuts down all other backends. Set to 0 to disable automatic shutdown.</source>
+ <translation>The number of seconds the master backend idles before it shuts down all other backends. Set to 0 to disable automatic shutdown.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="411"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="484"/>
+ <source>Maximum wait for recording (mins)</source>
+- <translation>Maximum wait for recording (mins)</translation>
++ <translation>Maximum Wait for Recording (mins)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="423"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="496"/>
+ <source>Startup before recording (secs)</source>
+- <translation>Startup before recording (secs)</translation>
++ <translation>Startup Before Recording (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="425"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="498"/>
+ <source>The number of seconds the master backend will be woken up before a recording starts.</source>
+ <translation>The number of seconds the master backend will be woken up before a recording starts.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="435"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="508"/>
+ <source>The format of the time string passed to the &apos;Command to set wakeup time&apos; as $time. See QT::QDateTime.toString() for details. Set to &apos;time_t&apos; for seconds since epoch.</source>
+ <translation>The format of the time string passed to the &apos;Command to set wakeup time&apos; as $time. See QT::QDateTime.toString() for details. Set to &apos;time_t&apos; for seconds since epoch.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="445"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="518"/>
+ <source>Command to set wakeup time</source>
+- <translation>Command to set wakeup time</translation>
++ <translation>Command to Set Wakeup Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="464"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="537"/>
+ <source>Pre-shutdown-check command</source>
+- <translation>Pre-shutdown-check command</translation>
++ <translation>Pre-shutdown Check Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="479"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="552"/>
+ <source>If enabled, the automatic shutdown routine will be disabled until a client connects.</source>
+ <translation>If enabled, the automatic shutdown routine will be disabled until a client connects.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="509"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="582"/>
+ <source>Job Queue check frequency (secs)</source>
+- <translation>Job Queue check frequency (secs)</translation>
++ <translation>Job Queue Check Frequency (secs)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="510"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="583"/>
+ <source>When looking for new jobs to process, the Job Queue will wait this many seconds between checks.</source>
+ <translation>When looking for new jobs to process, the Job Queue will wait this many seconds between checks.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="519"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="592"/>
+ <source>CPU usage</source>
+- <translation>CPU usage</translation>
++ <translation>CPU Usage</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="523"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="596"/>
+ <source>This setting controls approximately how much CPU jobs in the queue may consume. On &apos;High&apos;, all available CPU time may be used, which could cause problems on slower systems.</source>
+ <translation>This setting controls approximately how much CPU jobs in the queue may consume. On &apos;High&apos;, all available CPU time may be used, which could cause problems on slower systems.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="533"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="606"/>
+ <source>Job Queue start time</source>
+- <translation>Job Queue start time</translation>
++ <translation>Job Queue Start Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="534"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="607"/>
+ <source>This setting controls the start of the Job Queue time window, which determines when new jobs will be started.</source>
+ <translation>This setting controls the start of the Job Queue time window, which determines when new jobs will be started.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="543"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="616"/>
+ <source>Job Queue end time</source>
+- <translation>Job Queue end time</translation>
++ <translation>Job Queue End Time</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="544"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="617"/>
+ <source>This setting controls the end of the Job Queue time window, which determines when new jobs will be started.</source>
+ <translation>This setting controls the end of the Job Queue time window, which determines when new jobs will be started.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="553"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="626"/>
+ <source>Run jobs only on original recording backend</source>
+- <translation>Run jobs only on original recording backend</translation>
++ <translation>Run Jobs Only on Original Recording Backend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="555"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="628"/>
+ <source>If enabled, jobs in the queue will be required to run on the backend that made the original recording.</source>
+ <translation>If enabled, jobs in the queue will be required to run on the backend that made the original recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="564"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="637"/>
+ <source>Run transcode jobs before auto commercial detection</source>
+- <translation>Run transcode jobs before auto commercial detection</translation>
++ <translation>Run Transcode Jobs Before Auto Commercial Detection</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="567"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="640"/>
+ <source>If enabled, and if both auto-transcode and commercial detection are turned ON for a recording, transcoding will run first; otherwise, commercial detection runs first.</source>
+ <translation>If enabled, and if both auto-transcode and commercial detection are turned ON for a recording, transcoding will run first; otherwise, commercial detection runs first.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="577"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="650"/>
+ <source>Start auto-commercial-detection jobs when the recording starts</source>
+- <translation>Start auto-commercial-detection jobs when the recording starts</translation>
++ <translation>Start Auto Commercial Detection Jobs When the Recording Starts</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="580"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="653"/>
+ <source>If enabled, and Auto Commercial Detection is ON for a recording, the flagging job will be started as soon as the recording starts. NOT recommended on underpowered systems.</source>
+ <translation>If enabled, and Auto Commercial Detection is ON for a recording, the flagging job will be started as soon as the recording starts. NOT recommended on underpowered systems.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="590"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="663"/>
+ <source>User Job #%1 command</source>
+- <translation>User Job #%1 command</translation>
++ <translation>User Job #%1 Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="601"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="674"/>
+ <source>User Job #%1 description</source>
+- <translation>User Job #%1 description</translation>
++ <translation>User Job #%1 Description</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="603"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="676"/>
+ <source>The description for this User Job.</source>
+ <translation>The description for this User Job.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="610"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="683"/>
+ <source>Allow metadata lookup jobs</source>
+- <translation>Allow metadata lookup jobs</translation>
++ <translation>Allow Metadata Lookup Jobs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="620"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="693"/>
+ <source>Allow commercial-detection jobs</source>
+- <translation>Allow commercial-detection jobs</translation>
++ <translation>Allow Commercial Detection Jobs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="612"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="622"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="632"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="674"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="685"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="695"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="705"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="715"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="757"/>
+ <source>If enabled, allow jobs of this type to run on this backend.</source>
+ <translation>If enabled, allow jobs of this type to run on this backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="630"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="703"/>
+ <source>Allow transcoding jobs</source>
+- <translation>Allow transcoding jobs</translation>
++ <translation>Allow Transcoding Jobs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="650"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="733"/>
+ <source>Commercial-detection command</source>
+- <translation>Commercial-detection command</translation>
++ <translation>Commercial Detection Command</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="652"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="735"/>
+ <source>The program used to detect commercials in a recording. The default is &apos;mythcommflag&apos; if this setting is empty.</source>
+ <translation>The program used to detect commercials in a recording. The default is &apos;mythcommflag&apos; if this setting is empty.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="683"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="766"/>
+ <source>Include recordings in video list</source>
+- <translation>Include recordings in video list</translation>
++ <translation>Include Recordings in Video List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="696"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="779"/>
+ <source>Video content to show a WMP client</source>
+- <translation>Video content to show a WMP client</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="804"/>
+- <source>Host Address Backend Setup</source>
+- <translation>Host Address Backend Setup</translation>
++ <translation>Video Content to Show a WMP Client</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="806"/>
+- <source>Local Backend</source>
+- <translation>Local Backend</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="830"/>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="894"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="974"/>
+ <source>Master Backend</source>
+ <translation>Master Backend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="841"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="924"/>
+ <source>Locale Settings</source>
+ <translation>Locale Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="848"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="15"/>
++ <source>This server is the Master Backend</source>
++ <translation>This Server is the Master Backend</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="17"/>
++ <source>Enable this if this is the only backend or is the master backend server. If enabled, all frontend and non-master backend machines will connect to this server. To change to a new master backend, run setup on that server and select it as master backend.</source>
++ <translation>Enable if this is the only backend or is the master backend server. If enabled, all frontend and non-master backend machines will connect to this server. To change to a new master backend, run setup on that server and select it as master backend.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="30"/>
++ <source>Master Backend Name</source>
++ <translation>Master Backend Name</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="33"/>
++ <source>Host name of Master Backend. This is set by selecting &quot;This server is the Master Backend&quot; on that server.</source>
++ <translation>Host name of master backend. This is set by selecting &quot;This server is the master backend&quot; on that server.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="42"/>
++ <source>Allow Connections from all Subnets</source>
++ <translation>Allow Connections from All Subnets</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="44"/>
++ <source>Allow this backend to receive connections from any IP address on the internet. NOT recommended for most users. Use this only if you have secure IPV4 and IPV6 firewalls.</source>
++ <translation>Allow this backend to receive connections from any IP address on the internet. NOT recommended for most users. Use this only if you have secure IPV4 and IPV6 firewalls.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="76"/>
++ <source>Listen on IPv6 address</source>
++ <translation>Listen on IPv6 Address</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="931"/>
+ <source>Miscellaneous Settings</source>
+ <translation>Miscellaneous Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="851"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="934"/>
+ <source>File Management Settings</source>
+ <translation>File Management Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="872"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="952"/>
+ <source>EIT Scanner Options</source>
+ <translation>EIT Scanner Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="878"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="958"/>
+ <source>Shutdown/Wakeup Options</source>
+ <translation>Shutdown/Wakeup Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="891"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="971"/>
+ <source>Backend Wakeup settings</source>
+- <translation>Backend Wakeup settings</translation>
++ <translation>Backend Wakeup Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="901"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="981"/>
+ <source>Slave Backends</source>
+ <translation>Slave Backends</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="908"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="988"/>
+ <source>Backend Control</source>
+ <translation>Backend Control</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="914"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="994"/>
+ <source>Job Queue (Backend-Specific)</source>
+ <translation>Job Queue (Backend-Specific)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="941"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="1011"/>
+ <source>Job Queue (Global)</source>
+ <translation>Job Queue (Global)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="951"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="1021"/>
+ <source>Job Queue (Job Commands)</source>
+ <translation>Job Queue (Job Commands)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/backendsettings.cpp" line="862"/>
++ <location filename="../programs/mythtv-setup/backendsettings.cpp" line="942"/>
+ <source>UPnP Server Settings</source>
+ <translation>UPnP Server Settings</translation>
+ </message>
+@@ -19915,12 +20199,12 @@
+ <location filename="../programs/mythtv-setup/checksetup.cpp" line="62"/>
+ <location filename="../programs/mythtv-setup/checksetup.cpp" line="86"/>
+ <source>No Storage Group directories are defined. You must add at least one directory to the Default Storage Group where new recordings will be stored.</source>
+- <translation>No Storage Group directories are defined. You must add at least one directory to the Default Storage Group where new recordings will be stored.</translation>
++ <translation>No Storage Group directories are defined. You must add at least one directory to the Default Storage Group where new recordings will be stored.</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/checksetup.cpp" line="159"/>
+ <source>You have a Video Storage Group, but have not set up all Image Groups. If you continue, video image downloads will be saved in your Videos Storage Group. Do you want to store them in their own groups?</source>
+- <translation>You have a Video Storage Group, but have not set up all Image Groups. If you continue, video image downloads will be saved in your Videos Storage Group. Do you want to store them in their own groups?</translation>
++ <translation>You have a Video Storage Group, but have not set up all Image Groups. If you continue, video image downloads will be saved in your Videos Storage Group. Do you want to store them in their own groups?</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/checksetup.cpp" line="217"/>
+@@ -19928,83 +20212,83 @@
+ <translation>Card %1 (type %2) is set to start on channel %3, which does not exist.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/importicons.cpp" line="633"/>
++ <location filename="../programs/mythtv-setup/importicons.cpp" line="657"/>
+ <source>Searching for icons for channel %1</source>
+- <translation>Searching for icons for channel %1</translation>
++ <translation>Searching for Icons for Channel %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythtv-setup/main.cpp" line="517"/>
++ <location filename="../programs/mythtv-setup/main.cpp" line="579"/>
+ <source>MythTV Setup</source>
+ <translation>MythTV Setup</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="112"/>
+- <location filename="../libs/libmyth/rssparse.cpp" line="124"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="126"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="138"/>
+ <source>Web Only</source>
+ <translation>Web Only</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="114"/>
+- <location filename="../libs/libmyth/rssparse.cpp" line="126"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="128"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="140"/>
+ <source>Downloadable</source>
+ <translation>Downloadable</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="120"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="134"/>
+ <source>MB</source>
+ <comment>Megabytes</comment>
+ <translation>MB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="491"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="504"/>
+ <source>Comments</source>
+ <translation>Comments</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="510"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="523"/>
+ <source>Responses</source>
+ <translation>Responses</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/rssparse.cpp" line="529"/>
++ <location filename="../libs/libmyth/rssparse.cpp" line="542"/>
+ <source>Backlinks</source>
+ <translation>Backlinks</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.h" line="100"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.h" line="103"/>
+ <source>Scan Type</source>
+ <translation>Scan Type</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/videodbcheck.cpp" line="102"/>
+ <source>Error: failed to add new file type &apos;%1&apos;</source>
+- <translation>Error: failed to add new file type &apos;%1&apos;</translation>
++ <translation>Error: Failed to Add New File Type &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/videodbcheck.cpp" line="140"/>
+ <source>Error: failed to hash file &apos;%1&apos;</source>
+- <translation>Error: failed to hash file &apos;%1&apos;</translation>
++ <translation>Error: Failed to Hash File &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="646"/>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="654"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="633"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="641"/>
+ <source>Video Home</source>
+ <translation>Video Home</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="656"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="643"/>
+ <source>No files found</source>
+- <translation>No files found</translation>
++ <translation>No Files Found</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="952"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="938"/>
+ <source>Television</source>
+ <translation>Television</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythbackend/upnpcdstv.cpp" line="186"/>
+ <location filename="../programs/mythbackend/upnpcdsvideo.cpp" line="82"/>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="955"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="941"/>
+ <source>Movies</source>
+ <translation>Movies</translation>
+ </message>
+@@ -20065,84 +20349,84 @@
+ </message>
+ <message>
+ <location filename="../programs/mythbackend/upnpcdsvideo.cpp" line="490"/>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="968"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="954"/>
+ <source>Season %1</source>
+ <translation>Season %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videolist.cpp" line="1048"/>
++ <location filename="../programs/mythfrontend/videolist.cpp" line="1034"/>
+ <source>videos</source>
+ <translation>videos</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1641"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1645"/>
+ <source>&gt;1Gbps</source>
+ <translation>&gt;1Gbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1645"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1649"/>
+ <source>%1Mbps</source>
+ <translation>%1Mbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1645"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1649"/>
+ <source>%1MHz</source>
+ <translation>%1MHz</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1651"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1655"/>
+ <source>%1kHz</source>
+ <translation>%1kHz</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1651"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1655"/>
+ <source>%1kbps</source>
+ <translation>%1kbps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1657"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1661"/>
+ <source>%1bps</source>
+ <translation>%1bps</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/ringbuffer.cpp" line="1657"/>
++ <location filename="../libs/libmythtv/ringbuffer.cpp" line="1661"/>
+ <source>%1Hz</source>
+ <translation>%1Hz</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1033"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1103"/>
+ <source>%1 TB</source>
+ <translation>%1 TB</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1038"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1108"/>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1043"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1113"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1046"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1116"/>
+ <source>%1 KB</source>
+ <translation>%1 KB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="101"/>
++ <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="93"/>
+ <source>Version Mismatch</source>
+ <comment>UPNP Errors</comment>
+ <translation>Version Mismatch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="122"/>
++ <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="115"/>
+ <source>Not Authorized</source>
+ <comment>UPNP Errors</comment>
+ <translation>Not Authorized</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="126"/>
++ <location filename="../libs/libmythupnp/mythxmlclient.cpp" line="119"/>
+ <source>Unknown Error</source>
+ <comment>UPNP Errors</comment>
+ <translation>Unknown Error</translation>
+@@ -20150,17 +20434,17 @@
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="251"/>
+ <source>Match duplicates using subtitle &amp; description</source>
+- <translation>Match duplicates using subtitle &amp; description</translation>
++ <translation>Match Duplicates Using Subtitle &amp; Description</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="253"/>
+ <source>Match duplicates using subtitle then description</source>
+- <translation>Match duplicates using subtitle then description</translation>
++ <translation>Match Duplicates Using Subtitle Then Description</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="247"/>
+ <source>Match duplicates using subtitle</source>
+- <translation>Match duplicates using subtitle</translation>
++ <translation>Match Duplicates Using Subtitle</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="230"/>
+@@ -20180,22 +20464,22 @@
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="249"/>
+ <source>Match duplicates using description</source>
+- <translation>Match duplicates using description</translation>
++ <translation>Match Duplicates Using Description</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="245"/>
+ <source>Don&apos;t match duplicates</source>
+- <translation>Don&apos;t match duplicates</translation>
++ <translation>Don&apos;t Match Duplicates</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="181"/>
+ <source>Look for duplicates in current and previous recordings</source>
+- <translation>Look for duplicates in current and previous recordings</translation>
++ <translation>Look for Duplicates in Current and Previous Recordings</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="177"/>
+ <source>Look for duplicates in current recordings only</source>
+- <translation>Look for duplicates in current recordings only</translation>
++ <translation>Look for Duplicates in Current Recordings Only</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="160"/>
+@@ -20221,211 +20505,211 @@
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="179"/>
+ <source>Look for duplicates in previous recordings only</source>
+- <translation>Look for duplicates in previous recordings only</translation>
++ <translation>Look for Duplicates in Previous Recordings Only</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/recordingtypes.cpp" line="184"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2124"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2103"/>
+ <source>Record new episodes only</source>
+- <translation>Record new episodes only</translation>
++ <translation>Record New Episodes Only</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2095"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2074"/>
+ <source>Use any available input</source>
+- <translation>Use any available input</translation>
++ <translation>Use Any Available Input</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2102"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2081"/>
+ <source>Prefer input %1</source>
+- <translation>Prefer input %1</translation>
++ <translation>Prefer Input %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2121"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2100"/>
+ <source>Record new and repeat episodes</source>
+- <translation>Record new and repeat episodes</translation>
++ <translation>Record New and Repeat Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2418"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2396"/>
+ <source>Record using the %1 profile</source>
+- <translation>Record using the %1 profile</translation>
++ <translation>Record Using the %1 Profile</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2425"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2403"/>
+ <source>LiveTV</source>
+ <translation>LiveTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2428"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2406"/>
+ <source>High Quality</source>
+ <translation>High Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2431"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2409"/>
+ <source>Low Quality</source>
+ <translation>Low Quality</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2442"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2653"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2420"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2631"/>
+ <source>Include in the &quot;%1&quot; recording group</source>
+ <translation>Include in the &quot;%1&quot; recording group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2444"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2422"/>
+ <source>Create a new recording group</source>
+- <translation>Create a new recording group</translation>
++ <translation>Create a New Recording Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2474"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2452"/>
+ <source>Store in the &quot;%1&quot; storage group</source>
+- <translation>Store in the &quot;%1&quot; storage group</translation>
++ <translation>Store in the &quot;%1&quot; Storage Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2495"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2473"/>
+ <source>Use &quot;%1&quot; playback group settings</source>
+- <translation>Use &quot;%1&quot; playback group settings</translation>
++ <translation>Use &quot;%1&quot; Playback Group Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2528"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2506"/>
+ <source>Don&apos;t record if this would exceed the max episodes</source>
+- <translation>Don&apos;t record if this would exceed the max episodes</translation>
++ <translation>Don&apos;t Record If This Would Exceed the Max Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2531"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2509"/>
+ <source>Delete oldest if this would exceed the max episodes</source>
+- <translation>Delete oldest if this would exceed the max episodes</translation>
++ <translation>Delete Oldest If This Would Exceed the Max Episodes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2630"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2608"/>
+ <source>New Recording group name: </source>
+- <translation>New Recording group name: </translation>
++ <translation>New Recording Group name: </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2789"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2803"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2817"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2831"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2767"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2781"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2795"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="2809"/>
+ <source>Run &apos;%1&apos;</source>
+ <translation>Run &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="303"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="300"/>
+ <source>5.1 Channel Audio</source>
+ <translation>5.1 Channel Audio</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="311"/>
++ <location filename="../programs/mythfrontend/setupwizard_audio.cpp" line="308"/>
+ <source>7.1 Channel Audio</source>
+ <translation>7.1 Channel Audio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutput.cpp" line="382"/>
++ <location filename="../libs/libmyth/audio/audiooutput.cpp" line="383"/>
+ <source> (guessing: </source>
+ <translation> (guessing: </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputalsa.cpp" line="479"/>
++ <location filename="../libs/libmyth/audio/audiooutputalsa.cpp" line="478"/>
+ <location filename="../libs/libmyth/audio/audiooutputopensles.cpp" line="176"/>
+ <source>Unknown sample format: %1</source>
+ <translation>Unknown sample format: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputalsa.cpp" line="674"/>
+- <source>SetParameters() called with handle == NULL!</source>
+- <translation>SetParameters() called with handle == NULL!</translation>
++ <location filename="../libs/libmyth/audio/audiooutputalsa.cpp" line="675"/>
++ <source>SetParameters() called with handle == nullptr!</source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="670"/>
++ <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="689"/>
+ <source>Aborting Audio Reconfigure. Can&apos;t handle audio with more than 8 channels.</source>
+ <translation>Aborting Audio Reconfigure. Can&apos;t handle audio with more than 8 channels.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="722"/>
++ <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="741"/>
+ <source>Error creating resampler: %1</source>
+- <translation>Error creating resampler: %1</translation>
++ <translation>Error Creating Resampler: %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="758"/>
++ <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="777"/>
+ <source>AC-3 encoder initialization failed</source>
+- <translation>AC-3 encoder initialization failed</translation>
++ <translation>Ac-3 Encoder Initialization Failed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="819"/>
++ <location filename="../libs/libmyth/audio/audiooutputbase.cpp" line="838"/>
+ <source>Aborting reconfigure</source>
+- <translation>Aborting reconfigure</translation>
++ <translation>Aborting Reconfigure</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputdx.cpp" line="459"/>
+ <source>DirectSound initialization failed</source>
+- <translation>DirectSound initialization failed</translation>
++ <translation>DirectSound Initialization Failed</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputdx.cpp" line="531"/>
+ <source>Unsupported format for device %1:%2</source>
+- <translation>Unsupported format for device %1:%2</translation>
++ <translation>Unsupported Format for Device %1:%2</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmyth/audio/audiooutputdx.cpp" line="534"/>
+ <source>Failed to create DS buffer 0x%1</source>
+- <translation>Failed to create DS buffer 0x%1</translation>
++ <translation>Failed to Create DS Buffer 0x%1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/audio/audiooutputoss.cpp" line="143"/>
++ <location filename="../libs/libmyth/audio/audiooutputoss.cpp" line="141"/>
+ <source>Error opening audio device (%1)</source>
+- <translation>Error opening audio device (%1)</translation>
++ <translation>Error Opening Audio Device (%1)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/streamingringbuffer.cpp" line="77"/>
++ <location filename="../libs/libmythtv/streamingringbuffer.cpp" line="82"/>
+ <source>Failed to open stream (%1)</source>
+- <translation>Failed to open stream (%1)</translation>
++ <translation>Failed to Open Stream (%1)</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="86"/>
+ <source>Choose a channel name (any string, long version) </source>
+- <translation>Choose a channel name (any string, long version) </translation>
++ <translation>Choose a Channel Name (any string, long version) </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="88"/>
+ <source>Choose a channel callsign (any string, short version) </source>
+- <translation>Choose a channel callsign (any string, short version) </translation>
++ <translation>Choose a Channel Callsign (any string, short version) </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="93"/>
+ <source>Choose a channel preset (0..999) </source>
+- <translation>Choose a channel preset (0..999) </translation>
++ <translation>Choose a Channel Preset (0..999) </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="95"/>
+ <source>Choose a frequency id </source>
+- <translation>Choose a frequency id </translation>
++ <translation>Choose a Frequency ID </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="100"/>
+ <source>Choose a channel number </source>
+- <translation>Choose a channel number </translation>
++ <translation>Choose a Channel Number </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="105"/>
+ <source>Choose a channel fine tune offset </source>
+- <translation>Choose a channel fine tune offset </translation>
++ <translation>Choose a Channel Fine Tune Offset</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="108"/>
+ <source>Choose a TV format (PAL/SECAM/NTSC/ATSC/Default) </source>
+- <translation>Choose a TV format (PAL/SECAM/NTSC/ATSC/Default) </translation>
++ <translation>Choose a TV Format (PAL/SECAM/NTSC/ATSC/Default) </translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfilldatabase/channeldata.cpp" line="112"/>
+ <source>Choose a channel icon image (relative path to icon storage group) </source>
+- <translation>Choose a channel icon image (relative path to icon storage group) </translation>
++ <translation>Choose a Channel Icon Image (relative path to icon storage group) </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/xmltvparser.cpp" line="349"/>
++ <location filename="../programs/mythfilldatabase/xmltvparser.cpp" line="386"/>
+ <source>movie</source>
+ <translation>movie</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfilldatabase/xmltvparser.cpp" line="350"/>
++ <location filename="../programs/mythfilldatabase/xmltvparser.cpp" line="387"/>
+ <source>film</source>
+ <translation>film</translation>
+ </message>
+@@ -20433,56 +20717,56 @@
+ <location filename="../programs/mythshutdown/main.cpp" line="72"/>
+ <source>Error: Database not open while trying to load setting: %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: Database not open while trying to load setting: %1</translation>
++ <translation>Error: Database Not Open While Trying to Load Setting: %1</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="97"/>
+ <location filename="../programs/mythshutdown/main.cpp" line="151"/>
+ <source>Error: Waited too long to obtain lock on setting table</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: Waited too long to obtain lock on setting table</translation>
++ <translation>Error: Waited Too Long to Obtain Lock on Setting Table</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="229"/>
+ <source>Error: Could not connect to master server</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: Could not connect to master server</translation>
++ <translation>Error: Could Not Connect to Master Server</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="247"/>
+ <source>Transcoding in progress...</source>
+ <comment>mythshutdown</comment>
+- <translation>Transcoding in progress...</translation>
++ <translation>Transcoding in Progress...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="254"/>
+ <source>Commercial Detection in progress...</source>
+ <comment>mythshutdown</comment>
+- <translation>Commercial Detection in progress...</translation>
++ <translation>Commercial Detection in Progress...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="262"/>
+ <source>Grabbing EPG data in progress...</source>
+ <comment>mythshutdown</comment>
+- <translation>Grabbing EPG data in progress...</translation>
++ <translation>Grabbing EPG Data in Progress...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="270"/>
+ <source>Recording in progress...</source>
+ <comment>mythshutdown</comment>
+- <translation>Recording in progress...</translation>
++ <translation>Recording in Progress...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="277"/>
+ <source>Shutdown is locked</source>
+ <comment>mythshutdown</comment>
+- <translation>Shutdown is locked</translation>
++ <translation>Shutdown is Locked</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="284"/>
+ <source>Has queued or pending jobs</source>
+ <comment>mythshutdown</comment>
+- <translation>Has queued or pending jobs</translation>
++ <translation>Has Queued or Pending Jobs</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="317"/>
+@@ -20500,185 +20784,185 @@
+ <location filename="../programs/mythshutdown/main.cpp" line="342"/>
+ <source>About to start daily wakeup period (1)</source>
+ <comment>mythshutdown</comment>
+- <translation>About to start daily wakeup period (1)</translation>
++ <translation>About to Start Daily Wakeup Period (1)</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="354"/>
+ <source>About to start daily wakeup period (2)</source>
+ <comment>mythshutdown</comment>
+- <translation>About to start daily wakeup period (2)</translation>
++ <translation>About to Start Daily Wakeup Period (2)</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="363"/>
+ <source>Setup is running...</source>
+ <comment>mythshutdown</comment>
+- <translation>Setup is running...</translation>
++ <translation>Setup is Running...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="368"/>
+ <source>Mythshutdown: --status returned: %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Mythshutdown: --status returned: %1</translation>
++ <translation>Mythshutdown Status Returned: %1</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="386"/>
+ <source>Not OK to shutdown</source>
+ <comment>mythshutdown</comment>
+- <translation>Not OK to shutdown</translation>
++ <translation>Not OK to Shutdown</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="392"/>
+ <source>OK to shutdown</source>
+ <comment>mythshutdown</comment>
+- <translation>OK to shutdown</translation>
++ <translation>OK to Shutdown</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="407"/>
+ <source>Wakeup time given is: %1 (local time)</source>
+ <comment>mythshutdown</comment>
+- <translation>Wakeup time given is: %1 (local time)</translation>
++ <translation>Wakeup Time Given Is: %1 (local time)</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="419"/>
+ <source>Setting scheduled wakeup time: Attempting to connect to master server...</source>
+ <comment>mythshutdown</comment>
+- <translation>Setting scheduled wakeup time: Attempting to connect to master server...</translation>
++ <translation>Setting Scheduled Wakeup Time: Attempting to Connect to Master Server...</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="425"/>
+ <source>Setting scheduled wakeup time: Could not connect to master server!</source>
+ <comment>mythshutdown</comment>
+- <translation>Setting scheduled wakeup time: Could not connect to master server!</translation>
++ <translation>Setting Scheduled Wakeup Time: Could Not Connect to Master Server!</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="501"/>
+ <location filename="../programs/mythshutdown/main.cpp" line="514"/>
+ <source>Daily wakeup today at %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Daily wakeup today at %1</translation>
++ <translation>Daily Wakeup Today At %1</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="536"/>
+ <source>Next daily wakeup is tomorrow at %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Next daily wakeup is tomorrow at %1</translation>
++ <translation>Next Daily Wakeup is Tomorrow At %1</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="547"/>
+ <source>Error: no daily wakeup times are set</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: no daily wakeup times are set</translation>
++ <translation>Error: No Daily Wakeup Times Are Set</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="560"/>
+ <source>Error: no recording time is set</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: no recording time is set</translation>
++ <translation>Error: No Recording Time is Set</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="566"/>
+ <source>Recording scheduled at: %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Recording scheduled at: %1</translation>
++ <translation>Recording Scheduled At: %1</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="579"/>
+ <source>Scheduled recording time has already passed. Schedule deleted</source>
+ <comment>mythshutdown</comment>
+- <translation>Scheduled recording time has already passed. Schedule deleted</translation>
++ <translation>Scheduled Recording Time Has Already Passed. Schedule Deleted.</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="597"/>
+ <source>Error: no wake up time set and no scheduled program</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: no wake up time set and no scheduled program</translation>
++ <translation>Error: No Wake Up Time Set and No Scheduled Program</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="607"/>
+ <source>Will wake up at next scheduled program</source>
+ <comment>mythshutdown</comment>
+- <translation>Will wake up at next scheduled program</translation>
++ <translation>Will Wake Up At Next Scheduled Program</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="617"/>
+ <source>Will wake up at next daily wakeup</source>
+ <comment>mythshutdown</comment>
+- <translation>Will wake up at next daily wakeup</translation>
++ <translation>Will Wake Up At Next Daily Wakeup</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="629"/>
+ <source>Program is scheduled but will wake up at next daily wakeup</source>
+ <comment>mythshutdown</comment>
+- <translation>Program is scheduled but will wake up at next daily wakeup</translation>
++ <translation>Program is Scheduled but Will Wake Up At Next Daily Wakeup</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythshutdown/main.cpp" line="637"/>
+ <source>Daily wakeup is set but will wake up at next scheduled program</source>
+ <comment>mythshutdown</comment>
+- <translation>Daily wakeup is set but will wake up at next scheduled program</translation>
++ <translation>Daily Wakeup is Set but Will Wake Up At Next Scheduled Program</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="682"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="687"/>
+ <source>Sending command to set time in BIOS %1</source>
+ <comment>mythshutdown</comment>
+- <translation>Sending command to set time in BIOS %1</translation>
++ <translation>Sending Command to Set Time in BIOS %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="689"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="694"/>
+ <source>Program %1 exited with code %2</source>
+ <comment>mythshutdown</comment>
+- <translation>Program %1 exited with code %2</translation>
++ <translation>Program %1 Exited with Code %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="695"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="700"/>
+ <source>Error: nvram-wakeup failed to set time in BIOS</source>
+ <comment>mythshutdown</comment>
+- <translation>Error: nvram-wakeup failed to set time in BIOS</translation>
++ <translation>Error: nvram-wakeup Failed to Set Time in BIOS</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="710"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="715"/>
+ <source>The next wakeup time is less than 15 mins away, not shutting down.</source>
+ <comment>mythshutdown</comment>
+- <translation>The next wakeup time is less than 15 mins away, not shutting down.</translation>
++ <translation>The Next Wakeup Time is Less Than 15 Mins Away, Not Shutting Down.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="724"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="729"/>
+ <source>everything looks fine, shutting down ...</source>
+ <comment>mythshutdown</comment>
+- <translation>everything looks fine, shutting down ...</translation>
++ <translation>Everything Looks Fine, Shutting Down...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="729"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="734"/>
+ <source>shutting down</source>
+ <comment>mythshutdown</comment>
+- <translation>shutting down</translation>
++ <translation>Shutting Down</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="739"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="744"/>
+ <source>Everything looks fine, but reboot is needed</source>
+ <comment>mythshutdown</comment>
+- <translation>Everything looks fine, but reboot is needed</translation>
++ <translation>Everything Looks Fine, but Reboot is Needed</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="742"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="747"/>
+ <source>Sending command to bootloader</source>
+ <comment>mythshutdown</comment>
+- <translation>Sending command to bootloader</translation>
++ <translation>Sending Command to Bootloader</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="749"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="754"/>
+ <source>rebooting</source>
+ <comment>mythshutdown</comment>
+- <translation>rebooting</translation>
++ <translation>Rebooting</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="760"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="765"/>
+ <source>Error: Invalid shutdown mode, doing nothing.</source>
+ <comment>mythshutdown</comment>
+ <translation>Error: Invalid shutdown mode, doing nothing.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythshutdown/main.cpp" line="893"/>
++ <location filename="../programs/mythshutdown/main.cpp" line="898"/>
+ <source>Error: --setwakeup invalid date format (%1)
+ must be yyyy-MM-ddThh:mm:ss</source>
+ <comment>mythshutdown</comment>
+@@ -20686,14 +20970,14 @@
+ must be yyyy-MM-ddThh:mm:ss</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recorders/ExternalSignalMonitor.cpp" line="97"/>
++ <location filename="../libs/libmythtv/recorders/ExternalSignalMonitor.cpp" line="115"/>
+ <source>Error: stream handler died</source>
+- <translation>Error: stream handler died</translation>
++ <translation>Error: Stream Handler Died</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tvbrowsehelper.cpp" line="583"/>
++ <location filename="../libs/libmythtv/tvbrowsehelper.cpp" line="573"/>
+ <source>All channels</source>
+- <translation>All channels</translation>
++ <translation>All Channels</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythbackend/upnpcdsmusic.cpp" line="105"/>
+@@ -20717,6 +21001,11 @@
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
++ <message>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="573"/>
++ <source>New entry</source>
++ <translation>New Entry</translation>
++ </message>
+ </context>
+ <context>
+ <name>RawSettingsEditor</name>
+@@ -20729,12 +21018,12 @@
+ <context>
+ <name>RecMetadataEdit</name>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5356"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5400"/>
+ <source>Trying to manually find this recording online...</source>
+- <translation>Trying to manually find this recording online...</translation>
++ <translation>Trying to Manually Find This Recording Online...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/playbackbox.cpp" line="5479"/>
++ <location filename="../programs/mythfrontend/playbackbox.cpp" line="5523"/>
+ <source>No match found for this recording. You can try entering a TVDB/TMDB number, season, and episode manually.</source>
+ <translation>No match found for this recording. You can try entering a TVDB/TMDB number, season, and episode manually.</translation>
+ </message>
+@@ -20742,77 +21031,78 @@
+ <context>
+ <name>RecordingProfileEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1793"/>
+- <source>Add Recording Profile</source>
+- <translation>Add Recording Profile</translation>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1669"/>
++ <source>(Create new profile)</source>
++ <translation>Create New Profile</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingprofile.cpp" line="1794"/>
++ <location filename="../libs/libmythtv/recordingprofile.cpp" line="1681"/>
+ <source>Enter the name of the new profile</source>
+- <translation>Enter the name of the new profile</translation>
++ <translation>Enter profile name:</translation>
+ </message>
+ </context>
+ <context>
+ <name>RecordingRule</name>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="50"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="321"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="51"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="363"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="324"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="545"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="366"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="592"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="593"/>
+ <source>Default (Template)</source>
+ <translation>Default (Template)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="329"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="372"/>
+ <source>%1 (Template)</source>
+ <extracomment>%1 is the category</extracomment>
+ <translation>%1 (Template)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="353"/>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="809"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="397"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="853"/>
+ <source>Power Search</source>
+ <translation>Power Search</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="554"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="607"/>
+ <source>Default</source>
+ <comment>category</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="637"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="678"/>
+ <source>(%1 or later) %3</source>
+ <comment>e.g. (Sunday or later) program subtitle</comment>
+ <translation>(%1 or later) %3</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="668"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="709"/>
+ <source>Default</source>
+ <comment>Default template</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="812"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="856"/>
+ <source>Title Search</source>
+ <translation>Title Search</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="815"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="859"/>
+ <source>Keyword Search</source>
+ <translation>Keyword Search</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="818"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="862"/>
+ <source>People Search</source>
+ <translation>People Search</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/recordingrule.cpp" line="821"/>
++ <location filename="../libs/libmythtv/recordingrule.cpp" line="865"/>
+ <source>Unknown Search</source>
+ <translation>Unknown Search</translation>
+ </message>
+@@ -20820,130 +21110,126 @@
+ <context>
+ <name>ScanMonitor</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanmonitor.cpp" line="117"/>
++ <location filename="../libs/libmythtv/channelscan/scanmonitor.cpp" line="116"/>
+ <source>Scanning</source>
+- <translation>Scanning</translation>
++ <translation>Scanning...</translation>
+ </message>
+ </context>
+ <context>
+ <name>ScanOptionalConfig</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="242"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="245"/>
+ <source>Failed to open the card</source>
+- <translation>Failed to open the card</translation>
++ <translation>Failed to Open the Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="244"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="247"/>
+ <source>Failed to probe the card</source>
+- <translation>Failed to probe the card</translation>
++ <translation>Failed to Probe the Card</translation>
+ </message>
+ </context>
+ <context>
+ <name>ScanTypeSetting</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="109"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="115"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="125"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="153"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="161"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="171"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="177"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="110"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="116"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="126"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="154"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="162"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="172"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="178"/>
+ <source>Full Scan</source>
+ <translation>Full Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="111"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="121"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="131"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="139"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="147"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="157"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="165"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="181"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="112"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="122"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="132"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="140"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="148"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="158"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="166"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="182"/>
+ <source>Import existing scan</source>
+- <translation>Import existing scan</translation>
++ <translation>Import Existing Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="117"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="127"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="135"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="143"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="151"/>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="173"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="118"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="128"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="136"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="144"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="152"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="174"/>
+ <source>Full Scan (Tuned)</source>
+ <translation>Full Scan (Tuned)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="185"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="186"/>
+ <source>VBox Channel Import</source>
+ <translation>VBox Channel Import</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="189"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="190"/>
+ <source>M3U Import with MPTS</source>
+ <translation>M3U Import with MPTS</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="191"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="192"/>
+ <source>M3U Import</source>
+ <translation>M3U Import</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="195"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="196"/>
+ <source>ASI Scan</source>
+ <translation>ASI Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="199"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="200"/>
+ <source>MPTS Scan</source>
+ <translation>MPTS Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="203"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="202"/>
++ <source>Import from ExternalRecorder</source>
++ <translation></translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="206"/>
+ <source>Failed to probe the card</source>
+- <translation>Failed to probe the card</translation>
++ <translation>Failed to Probe the Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="207"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="210"/>
+ <source>Failed to open the card</source>
+- <translation>Failed to open the card</translation>
++ <translation>Failed to Open the Card</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="212"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="215"/>
+ <source>Scan of all existing transports</source>
+- <translation>Scan of all existing transports</translation>
++ <translation>Scan of All Existing Transports</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="214"/>
++ <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="217"/>
+ <source>Scan of single existing transport</source>
+- <translation>Scan of single existing transport</translation>
++ <translation>Scan of Single Existing Transport</translation>
+ </message>
+ </context>
+ <context>
+ <name>ScanWizard</name>
+ <message>
+- <location filename="../libs/libmythtv/scanwizard.cpp" line="165"/>
+- <location filename="../libs/libmythtv/scanwizard.cpp" line="184"/>
+- <source>ScanWizard</source>
+- <translation>ScanWizard</translation>
++ <location filename="../libs/libmythtv/scanwizard.cpp" line="52"/>
++ <source>Scan</source>
++ <translation>Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/scanwizard.cpp" line="166"/>
++ <location filename="../libs/libmythtv/scanwizard.cpp" line="151"/>
+ <source>Programmer Error, see console</source>
+- <translation>Programmer Error, see console</translation>
++ <translation>Programmer Error, See Console</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/scanwizard.cpp" line="185"/>
++ <location filename="../libs/libmythtv/scanwizard.cpp" line="168"/>
+ <source>Error parsing parameters</source>
+- <translation>Error parsing parameters</translation>
+- </message>
+-</context>
+-<context>
+- <name>ScanWizardConfig</name>
+- <message>
+- <location filename="../libs/libmythtv/channelscan/scanwizardconfig.cpp" line="37"/>
+- <source>Scan Configuration</source>
+- <translation>Scan Configuration</translation>
++ <translation>Error Parsing Parameters</translation>
+ </message>
+ </context>
+ <context>
+@@ -20951,168 +21237,178 @@
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="52"/>
+ <source>New episode</source>
+- <translation>New episode</translation>
++ <translation>New Episode</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="53"/>
+ <source>Identifiable episode</source>
+- <translation>Identifiable episode</translation>
++ <translation>Identifiable Episode</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="54"/>
+ <source>First showing</source>
+- <translation>First showing</translation>
++ <translation>First Showing</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="55"/>
+ <source>Prime time</source>
+- <translation>Prime time</translation>
++ <translation>Prime Time</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="58"/>
+ <source>This episode</source>
+- <translation>This episode</translation>
++ <translation>This Episode</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="59"/>
+ <source>This series</source>
+- <translation>This series</translation>
++ <translation>This Series</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="60"/>
+ <source>This time</source>
+- <translation>This time</translation>
++ <translation>This Time</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="61"/>
+ <source>This day and time</source>
+- <translation>This day and time</translation>
++ <translation>This Day and Time</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="62"/>
+ <source>This channel</source>
+- <translation>This channel</translation>
++ <translation>This Channel</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="63"/>
+ <source>No episodes</source>
+- <translation>No episodes</translation>
++ <translation>No Episodes</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="56"/>
+ <source>Commercial free</source>
+- <translation>Commercial free</translation>
++ <translation>Commercial Free</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="57"/>
+ <source>High definition</source>
+- <translation>High definition</translation>
++ <translation>High Definition</translation>
+ </message>
+ </context>
+ <context>
+ <name>ScheduleCommon</name>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="196"/>
++ <source>Recording rule does not exist.</source>
++ <translation>Recording rule does not exist.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="300"/>
+ <source>The following programs will be recorded instead:</source>
+- <translation>The following programs will be recorded instead:</translation>
++ <translation>The Following Programs Will Be Recorded Instead:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="329"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="381"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="471"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="339"/>
++ <source>Watch This Channel</source>
++ <translation>Watch This Channel</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="344"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="398"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="488"/>
+ <source>Record this showing</source>
+- <translation>Record this showing</translation>
++ <translation>Record This Showing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="331"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="482"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="346"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="499"/>
+ <source>Record all showings</source>
+- <translation>Record all showings</translation>
++ <translation>Record All Showings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="336"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="485"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="351"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="502"/>
+ <source>Record one showing</source>
+- <translation>Record one showing</translation>
++ <translation>Record One Showing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="339"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="484"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="354"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="501"/>
+ <source>Record one showing (this episode)</source>
+- <translation>Record one showing (this episode)</translation>
++ <translation>Record One Showing (this episode)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="343"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="491"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="358"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="508"/>
+ <source>Record all showings (this channel)</source>
+- <translation>Record all showings (this channel)</translation>
++ <translation>Record All Showings (this channel)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="345"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="445"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="521"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="360"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="462"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="538"/>
+ <source>Edit recording rule</source>
+- <translation>Edit recording rule</translation>
++ <translation>Edit Recording Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="352"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="497"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="369"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="514"/>
+ <source>Stop this recording</source>
+- <translation>Stop this recording</translation>
++ <translation>Stop This Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="354"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="501"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="371"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="518"/>
+ <source>Modify recording options</source>
+- <translation>Modify recording options</translation>
++ <translation>Modify Recording Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="364"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="511"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="381"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="528"/>
+ <source>Restart this recording</source>
+- <translation>Restart this recording</translation>
++ <translation>Restart This Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="387"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="513"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="404"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="530"/>
+ <source>Forget previous recording</source>
+- <translation>Forget previous recording</translation>
++ <translation>Forget Previous Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="404"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="515"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="421"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="532"/>
+ <source>Don&apos;t record this showing</source>
+- <translation>Don&apos;t record this showing</translation>
++ <translation>Don&apos;t Record This Showing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="426"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="517"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="443"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="534"/>
+ <source>Never record this episode</source>
+- <translation>Never record this episode</translation>
++ <translation>Never Record This Episode</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="434"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="522"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="451"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="539"/>
+ <source>Edit override rule</source>
+- <translation>Edit override rule</translation>
++ <translation>Edit Override Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="436"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="525"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="453"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="542"/>
+ <source>Delete override rule</source>
+- <translation>Delete override rule</translation>
++ <translation>Delete Override Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="443"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="502"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="460"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="519"/>
+ <source>Add override rule</source>
+- <translation>Add override rule</translation>
++ <translation>Add Override Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="447"/>
+- <location filename="../programs/mythfrontend/schedulecommon.cpp" line="524"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="464"/>
++ <location filename="../programs/mythfrontend/schedulecommon.cpp" line="541"/>
+ <source>Delete recording rule</source>
+- <translation>Delete recording rule</translation>
++ <translation>Delete Recording Rule</translation>
+ </message>
+ </context>
+ <context>
+@@ -21129,72 +21425,72 @@
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="517"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="603"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="602"/>
+ <source>Upcoming Episodes</source>
+ <translation>Upcoming Episodes</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="518"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="605"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="604"/>
+ <source>Upcoming Recordings</source>
+ <translation>Upcoming Recordings</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="520"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="607"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="606"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="576"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="575"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="818"/>
+ <source>Main Options</source>
+ <translation>Main Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="578"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="577"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="820"/>
+ <source>Schedule Options</source>
+ <translation>Schedule Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="580"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="579"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="822"/>
+ <source>Filter Options</source>
+ <translation>Filter Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="582"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="581"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="824"/>
+ <source>Storage Options</source>
+ <translation>Storage Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="584"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="583"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="826"/>
+ <source>Post Processing</source>
+ <translation>Post Processing</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="586"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="585"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="829"/>
+ <source>Metadata Options</source>
+ <translation>Metadata Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="588"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="587"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="834"/>
+ <source>Use Template</source>
+ <translation>Use Template</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="590"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="589"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="831"/>
+ <source>Schedule Info</source>
+ <translation>Schedule Info</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="592"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="591"/>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="833"/>
+ <source>Preview Changes</source>
+ <translation>Preview Changes</translation>
+@@ -21207,7 +21503,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="848"/>
+ <source>No templates available</source>
+- <translation>No templates available</translation>
++ <translation>No Templates Available</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="852"/>
+@@ -21226,7 +21522,7 @@
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="516"/>
+- <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="601"/>
++ <location filename="../programs/mythfrontend/scheduleeditor.cpp" line="600"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+@@ -21244,17 +21540,17 @@
+ <translation>Upgrade</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="246"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="249"/>
+ <source>There are also other clients using this database. They should be shut down first.</source>
+ <translation>There are also other clients using this database. They should be shut down first.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="249"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="252"/>
+ <source>Error: This version of Myth%1 requires MySQL %2.%3.%4 or later. You seem to be running MySQL version %5.</source>
+- <translation>Error: This version of Myth%1 requires MySQL %2.%3.%4 or later. You seem to be running MySQL version %5.</translation>
++ <translation>Error: This version of Myth%1 requires MySQL %2.%3.%4 or later. You seem to be running MySQL version %5.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="317"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="320"/>
+ <source>Error: MythTV cannot upgrade the schema of this datatase because other clients are using it.
+
+ Please shut them down before upgrading.</source>
+@@ -21263,49 +21559,49 @@
+ Please shut them down before upgrading.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="324"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="327"/>
+ <source>Warning: MythTV wants to upgrade your database,</source>
+ <translation>Warning: MythTV wants to upgrade your database,</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="325"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="328"/>
+ <source>for the %1 schema, from %2 to %3.</source>
+ <translation>for the %1 schema, from %2 to %3.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="339"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="342"/>
+ <source>This version of MythTV requires an updated database. </source>
+ <translation>This version of MythTV requires an updated database. </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="340"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="343"/>
+ <source>(schema is %1 versions behind)</source>
+ <translation>(schema is %1 versions behind)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="341"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="344"/>
+ <source>Please run mythtv-setup or mythbackend to update your database.</source>
+ <translation>Please run mythtv-setup or mythbackend to update your database.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="353"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="356"/>
+ <source>Error: MythTV database has newer %1 schema (%2) than expected (%3).</source>
+ <translation>Error: MythTV database has newer %1 schema (%2) than expected (%3).</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="360"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="363"/>
+ <source>MythTV was unable to backup your database.</source>
+ <translation>MythTV was unable to backup your database.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="367"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="370"/>
+ <source>Database Host: %1
+ Database Name: %2</source>
+ <translation>Database Host: %1
+ Database Name: %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="397"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="400"/>
+ <source>If your system becomes unstable, a database backup file called
+ %1
+ is located in %2</source>
+@@ -21314,9 +21610,9 @@
+ is located in %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/schemawizard.cpp" line="402"/>
++ <location filename="../libs/libmyth/schemawizard.cpp" line="405"/>
+ <source>This cannot be un-done, so having a database backup would be a good idea.</source>
+- <translation>This cannot be un-done, so having a database backup would be a good idea.</translation>
++ <translation>This cannot be undone, so having a database backup would be a good idea.</translation>
+ </message>
+ </context>
+ <context>
+@@ -21324,60 +21620,50 @@
+ <message>
+ <location filename="../libs/libmythtv/signalmonitorvalue.cpp" line="24"/>
+ <source>Could not open tuner device</source>
+- <translation>Could not open tuner device</translation>
++ <translation>Could Not Open Tuner Device</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythtv/signalmonitorvalue.cpp" line="25"/>
+ <source>Bad connection to backend</source>
+- <translation>Bad connection to backend</translation>
++ <translation>Bad Connection to Backend</translation>
+ </message>
+ </context>
+ <context>
+- <name>SlideSettings</name>
++ <name>StandardSettingDialog</name>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="68"/>
+- <source>Slideshow</source>
+- <translation>Slideshow</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="71"/>
+- <source>Transition</source>
+- <translation>Transition</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1003"/>
++ <source>Exit ?</source>
++ <translation>Exit Settings?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="72"/>
+- <source>Effect to use between slides</source>
+- <translation>Effect to use between slides</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1017"/>
++ <source>Save then Exit</source>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="86"/>
+- <source>Slide Duration (ms)</source>
+- <translation>Slide Duration (ms)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="87"/>
+- <source>The time that a slide is displayed (between transitions), in milliseconds.</source>
+- <translation>The time that a slide is displayed (between transitions), in milliseconds.</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1018"/>
++ <source>Exit without saving changes</source>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="92"/>
+- <source>Transition Duration (ms)</source>
+- <translation>Transition Duration (ms)</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1019"/>
++ <source>Cancel</source>
++ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="93"/>
+- <source>The time that each transition lasts, in milliseconds.</source>
+- <translation>The time that each transition lasts, in milliseconds.</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1093"/>
++ <source>Edit</source>
++ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="97"/>
+- <source>Use transitions when browsing</source>
+- <translation>Use transitions when browsing</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1095"/>
++ <source>Delete</source>
++ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="98"/>
+- <source>When cleared, transitions will only be used during a slideshow.</source>
+- <translation>When cleared, transitions will only be used during a slideshow.</translation>
++ <location filename="../libs/libmyth/standardsettings.cpp" line="1131"/>
++ <source>Do you want to delete the &apos;%1&apos; entry?</source>
++ <translation>Do you want to delete the &apos;%1&apos; entry?</translation>
+ </message>
+ </context>
+ <context>
+@@ -21385,7 +21671,7 @@
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="72"/>
+ <source>WARNING: The backend is currently running.</source>
+- <translation>WARNING: The backend is currently running.</translation>
++ <translation>Warning: The backend is currently running.</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="73"/>
+@@ -21395,7 +21681,7 @@
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="77"/>
+ <source>Recording Status: RECORDING.</source>
+- <translation>Recording Status: RECORDING.</translation>
++ <translation>Recording Status: Recording</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="78"/>
+@@ -21405,7 +21691,7 @@
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="82"/>
+ <source>Recording Status: None.</source>
+- <translation>Recording Status: None.</translation>
++ <translation>Recording Status: None</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythtv-setup/startprompt.cpp" line="103"/>
+@@ -21426,15 +21712,15 @@
+ <context>
+ <name>StartingChannel</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3318"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3013"/>
+ <source>Please add channels to this source</source>
+- <translation>Please add channels to this source</translation>
++ <translation>Please Add Channels to This Source</translation>
+ </message>
+ </context>
+ <context>
+ <name>StatusBox</name>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1435"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1508"/>
+ <source>%n (is) LiveTV and consume(s) %1
+ </source>
+ <translation>
+@@ -21445,7 +21731,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1439"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1512"/>
+ <source>%n (is) Deleted and consume(s) %1
+ </source>
+ <translation>
+@@ -21456,8 +21742,8 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="592"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1123"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="591"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1193"/>
+ <source>%n day(s)</source>
+ <translation>
+ <numerusform>%n day</numerusform>
+@@ -21475,178 +21761,178 @@
+ <translation>Schedule Status</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="122"/>
+- <source>Tuner Status</source>
+- <translation>Tuner Status</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="205"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="219"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="280"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="204"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="218"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="279"/>
+ <source>Log Entries</source>
+ <translation>Log Entries</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/statusbox.cpp" line="126"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="293"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="292"/>
+ <source>Job Queue</source>
+ <translation>Job Queue</translation>
+ </message>
+ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="122"/>
++ <source>Input Status</source>
++ <translation></translation>
++ </message>
++ <message>
+ <location filename="../programs/mythfrontend/statusbox.cpp" line="130"/>
+ <source>Machine Status</source>
+ <translation>Machine Status</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/statusbox.cpp" line="134"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="351"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="350"/>
+ <source>AutoExpire List</source>
+ <translation>AutoExpire List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="207"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="206"/>
+ <source>Acknowledge all log entries at this priority level or lower?</source>
+ <translation>Acknowledge all log entries at this priority level or lower?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="224"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="227"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="223"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="226"/>
+ <source>Setting priority level to %1</source>
+ <translation>Setting priority level to %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="282"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="281"/>
+ <source>Acknowledge this log entry?</source>
+ <translation>Acknowledge this log entry?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="302"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="301"/>
+ <source>Delete Job?</source>
+ <translation>Delete Job?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="318"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="317"/>
+ <source>Job Queue Actions:</source>
+ <translation>Job Queue Actions:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="331"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="330"/>
+ <source>Resume</source>
+ <translation>Resume</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="333"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="332"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="334"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="333"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="335"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="378"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="334"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="377"/>
+ <source>No Change</source>
+ <translation>No Change</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="339"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="338"/>
+ <source>Requeue Job?</source>
+ <translation>Requeue Job?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="357"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="356"/>
+ <source>AutoExpire Actions:</source>
+ <translation>AutoExpire Actions:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="367"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="366"/>
+ <source>Delete Now</source>
+ <translation>Delete Now</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="370"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="369"/>
+ <source>Move to Default group</source>
+- <translation>Move to Default group</translation>
++ <translation>Move to Default Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="374"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="373"/>
+ <source>Undelete</source>
+ <translation>Undelete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="376"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="375"/>
+ <source>Disable AutoExpire</source>
+ <translation>Disable AutoExpire</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="514"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="513"/>
+ <source>Listings Status shows the latest status information from mythfilldatabase</source>
+- <translation>Listings Status shows the latest status information from mythfilldatabase</translation>
++ <translation>Listings Status shows the latest status information from mythfilldatabase.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="546"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="545"/>
+ <source>Mythfrontend version: %1 (%2)</source>
+- <translation>Mythfrontend version: %1 (%2)</translation>
++ <translation>MythFrontend Version: %1 (%2)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="548"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="547"/>
+ <source>Last mythfilldatabase guide update:</source>
+- <translation>Last mythfilldatabase guide update:</translation>
++ <translation>Last mythfilldatabase Guide Update:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="549"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="548"/>
+ <source>Started: %1</source>
+ <translation>Started: %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="556"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="555"/>
+ <source>Finished: %1</source>
+ <translation>Finished: %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="563"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="562"/>
+ <source>Result: %1</source>
+ <translation>Result: %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="568"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="567"/>
+ <source>Suggested Next: %1</source>
+ <translation>Suggested Next: %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="579"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="578"/>
+ <source>There&apos;s no guide data available!</source>
+ <translation>There&apos;s no guide data available!</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="581"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="580"/>
+ <source>Have you run mythfilldatabase?</source>
+ <translation>Have you run mythfilldatabase?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="587"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="586"/>
+ <source>There is guide data until %1</source>
+ <translation>There is guide data until %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="597"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="596"/>
+ <source>WARNING: is mythfilldatabase running?</source>
+- <translation>WARNING: is mythfilldatabase running?</translation>
++ <translation>Warning: is mythfilldatabase running?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="602"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="601"/>
+ <source>DataDirect Status: </source>
+ <translation>DataDirect Status: </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="614"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="613"/>
+ <source>Schedule Status shows current statistics from the scheduler.</source>
+ <translation>Schedule Status shows current statistics from the scheduler.</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="627"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="626"/>
+ <source>%n template rule(s) (is) defined</source>
+ <translation>
+ <numerusform>%n template rule is defined</numerusform>
+@@ -21654,7 +21940,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="643"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="642"/>
+ <source>%n standard rule(s) (is) defined</source>
+ <translation>
+ <numerusform>%n standard rule is defined</numerusform>
+@@ -21662,7 +21948,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="657"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="656"/>
+ <source>%n search rule(s) are defined</source>
+ <translation>
+ <numerusform>%n search rule is defined</numerusform>
+@@ -21670,7 +21956,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="716"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="720"/>
+ <source>%n matching showing(s)</source>
+ <translation>
+ <numerusform>%n matching showing</numerusform>
+@@ -21678,47 +21964,72 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="766"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="782"/>
+ <source>with lower priority</source>
+ <translation>with lower priority</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="772"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="788"/>
+ <source>marked as HDTV</source>
+ <translation>marked as HDTV</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="782"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="798"/>
+ <source>from source</source>
+ <translation>from source</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="804"/>
+- <source>Tuner Status shows the current information about the state of backend tuner cards</source>
+- <translation>Tuner Status shows the current information about the state of backend tuner cards</translation>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="808"/>
++ <source>on input</source>
++ <translation>on input</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="836"/>
++ <source>Input Status shows the current information about the state of backend inputs</source>
++ <translation>Input Status shows the current information about the state of backend inputs.</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="930"/>
++ <source>%1 errored</source>
++ <translation>%1 Errored</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="932"/>
++ <source>%1 unavailable</source>
++ <translation>%1 Unavailable</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="934"/>
++ <source>%1 sleeping</source>
++ <translation>%1 Sleeping</translation>
++ </message>
++ <message>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="936"/>
++ <source>%1 recording</source>
++ <translation>%1 Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="845"/>
+- <source>has an error</source>
+- <translation>has an error</translation>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="938"/>
++ <source>%1 live television</source>
++ <translation>%1 Live Television</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="847"/>
+- <source>is unavailable</source>
+- <translation>is unavailable</translation>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="940"/>
++ <source>%1 available</source>
++ <translation>%1 Available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="849"/>
+- <source>is asleep</source>
+- <translation>is asleep</translation>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="948"/>
++ <source>Input %1 %2: %3</source>
++ <translation>Input %1 %2: %3</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="854"/>
+- <source>is watching Live TV</source>
+- <translation>is watching Live TV</translation>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="950"/>
++ <source>, </source>
++ <translation></translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="916"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="986"/>
+ <source>On %1 from %2.%3
+ %4
+ </source>
+@@ -21726,27 +22037,27 @@
+ %4</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="928"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="998"/>
+ <source>No further details</source>
+ <translation>No further details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="949"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1019"/>
+ <source>Job Queue shows any jobs currently in MythTV&apos;s Job Queue such as a commercial detection job.</source>
+ <translation>Job Queue shows any jobs currently in MythTV&apos;s Job Queue such as a commercial detection job.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1057"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1127"/>
+ <source>%1 total, %2 used, %3 (or %4%) free.</source>
+- <translation>%1 total, %2 used, %3 (or %4%) free.</translation>
++ <translation>%1 total, %2 used, %3 (or %4%) free</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1074"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1144"/>
+ <source>, using your %1 rate of %2 kb/s</source>
+ <translation>, using your %1 rate of %2 kb/s</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1090"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1160"/>
+ <source>%n hour(s)</source>
+ <translation>
+ <numerusform>%n hour</numerusform>
+@@ -21754,7 +22065,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1091"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1161"/>
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n minute</numerusform>
+@@ -21762,178 +22073,158 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1092"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1162"/>
+ <source>%1 remaining</source>
+ <comment>time</comment>
+ <translation>%1 remaining</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1096"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1166"/>
+ <source>%1 and %2 remaining</source>
+ <comment>time</comment>
+ <translation>%1 and %2 remaining</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1108"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1178"/>
+ <source>Uptime</source>
+ <translation>Uptime</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1111"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1181"/>
+ <source>unknown</source>
+ <comment>unknown uptime</comment>
+ <translation>unknown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1161"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1231"/>
+ <source>average</source>
+ <comment>average rate</comment>
+ <translation>average</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1181"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1251"/>
+ <source>maximum</source>
+ <comment>maximum rate</comment>
+ <translation>maximum</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="857"/>
+- <source>is recording</source>
+- <translation>is recording</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="792"/>
+- <source>on card</source>
+- <translation>on card</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="859"/>
+- <source>is not recording</source>
+- <translation>is not recording</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="861"/>
+- <source>Tuner %1 %2 %3</source>
+- <translation>Tuner %1 %2 %3</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="894"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="964"/>
+ <source>Log Entries shows any unread log entries from the system if you have logging enabled</source>
+ <translation>Log Entries shows any unread log entries from the system if you have logging enabled</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="936"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1006"/>
+ <source>No items found at priority level %1 or lower.</source>
+ <translation>No items found at priority level %1 or lower.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="938"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1008"/>
+ <source>Use 1-8 to change priority level.</source>
+ <translation>Use 1-8 to change priority level.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="983"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1053"/>
+ <source>Job:</source>
+ <translation>Job:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="985"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1055"/>
+ <source>Status: </source>
+ <translation>Status: </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="992"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1062"/>
+ <source>Scheduled Run Time:</source>
+ <translation>Scheduled Run Time:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1015"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1085"/>
+ <source>Job Queue is currently empty.</source>
+ <translation>Job Queue is currently empty.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1203"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1273"/>
+ <source>Machine Status shows some operating system statistics of this machine</source>
+- <translation>Machine Status shows some operating system statistics of this machine</translation>
++ <translation>Machine Status shows some operating system statistics of this machine.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1206"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1276"/>
+ <source>and the MythTV server</source>
+ <translation>and the MythTV server</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1219"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1289"/>
+ <source>System:</source>
+ <translation>System:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1221"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1291"/>
+ <source>This machine:</source>
+- <translation>This machine:</translation>
++ <translation>This Machine:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1230"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1278"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1300"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1348"/>
+ <source>Load</source>
+ <translation>Load</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1233"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1237"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1288"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1303"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1307"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1361"/>
+ <source>unknown</source>
+ <translation>unknown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1233"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1237"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1303"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1307"/>
+ <source>failed</source>
+ <translation>failed</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1255"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1298"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1325"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1371"/>
+ <source>RAM</source>
+ <translation>RAM</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1261"/>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1306"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1331"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1379"/>
+ <source>Swap</source>
+ <translation>Swap</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1269"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1339"/>
+ <source>MythTV server</source>
+- <translation>MythTV server</translation>
++ <translation>MythTV Server</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1339"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1412"/>
+ <source>Total Disk Space:</source>
+ <translation>Total Disk Space:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1344"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1417"/>
+ <source>MythTV Drive #%1:</source>
+ <translation>MythTV Drive #%1:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1351"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1424"/>
+ <source>Directories:</source>
+ <translation>Directories:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1360"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1433"/>
+ <source>Directory:</source>
+ <translation>Directory:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1384"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1457"/>
+ <source>The AutoExpire List shows all recordings which may be expired and the order of their expiration. Recordings at the top of the list will be expired first.</source>
+ <translation>The AutoExpire List shows all recordings which may be expired and the order of their expiration. Recordings at the top of the list will be expired first.</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/statusbox.cpp" line="1431"/>
++ <location filename="../programs/mythfrontend/statusbox.cpp" line="1504"/>
+ <source>%n recording(s) consuming %1 (is) allowed to expire
+ </source>
+ <translation>
+@@ -21945,58 +22236,55 @@
+ </message>
+ </context>
+ <context>
++ <name>StorageGroupDirSetting</name>
++ <message>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="203"/>
++ <source>Remove &apos;%1&apos;
++Directory From Storage Group?</source>
++ <translation>Remove &apos;%1&apos;
++Directory from Storage Group?</translation>
++ </message>
++</context>
++<context>
+ <name>StorageGroupEditor</name>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="69"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="32"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="79"/>
+ <source>Default</source>
+ <comment>Default storage group</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="76"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="39"/>
+ <source>&apos;%1&apos; Storage Group Directories</source>
+ <translation>&apos;%1&apos; Storage Group Directories</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="80"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="43"/>
+ <source>Local &apos;%1&apos; Storage Group Directories</source>
+ <translation>Local &apos;%1&apos; Storage Group Directories</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="96"/>
+- <source>Add Storage Group Directory</source>
+- <translation>Add Storage Group Directory</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="97"/>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="122"/>
+- <source>Enter directory name or press SELECT to enter text via the On Screen Keyboard</source>
+- <translation>Enter directory name or press SELECT to enter text via the On Screen Keyboard</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="121"/>
+- <source>Edit Storage Group Directory</source>
+- <translation>Edit Storage Group Directory</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="161"/>
+- <source>Remove &apos;%1&apos;
+-Directory From Storage Group?</source>
+- <translation>Remove &apos;%1&apos;
+-Directory From Storage Group?</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="84"/>
++ <source>Delete &apos;%1&apos; Storage Group?</source>
++ <translation>Delete &apos;%1&apos; Storage Group?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="165"/>
+- <source>Yes, remove directory</source>
+- <translation>Yes, remove directory</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="89"/>
++ <source>Delete &apos;%1&apos; Storage Group?
++(from remote hosts)</source>
++ <translation>Delete &apos;%1&apos; Storage Group?
++(from remote hosts)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="166"/>
+- <source>No, Don&apos;t remove directory</source>
+- <translation>No, Don&apos;t remove directory</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="93"/>
++ <source>Delete &apos;%1&apos; Storage Group?
++(from all hosts)</source>
++ <translation>Delete &apos;%1&apos; Storage Group?
++(from all hosts)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="223"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="242"/>
+ <source>(Add New Directory)</source>
+ <translation>(Add New Directory)</translation>
+ </message>
+@@ -22004,168 +22292,139 @@
+ <context>
+ <name>StorageGroupListEditor</name>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="254"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="343"/>
+ <source>Storage Groups (directories for new recordings)</source>
+ <translation>Storage Groups (directories for new recordings)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="257"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="345"/>
+ <source>Local Storage Groups (directories for new recordings)</source>
+ <translation>Local Storage Groups (directories for new recordings)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="277"/>
+- <source>Create New Storage Group</source>
+- <translation>Create New Storage Group</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="278"/>
+- <source>Enter group name or press SELECT to enter text via the On Screen Keyboard</source>
+- <translation>Enter group name or press SELECT to enter text via the On Screen Keyboard</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="302"/>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="401"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="395"/>
+ <source>Default</source>
+ <comment>Default storage group</comment>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="307"/>
+- <source>Delete &apos;%1&apos; Storage Group?</source>
+- <translation>Delete &apos;%1&apos; Storage Group?</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="312"/>
+- <source>Delete &apos;%1&apos; Storage Group?
+-(from remote hosts)</source>
+- <translation>Delete &apos;%1&apos; Storage Group?
+-(from remote hosts)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="316"/>
+- <source>Delete &apos;%1&apos; Storage Group?
+-(from all hosts)</source>
+- <translation>Delete &apos;%1&apos; Storage Group?
+-(from all hosts)</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="323"/>
+- <source>Yes, delete group</source>
+- <translation>Yes, delete group</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="427"/>
++ <source>(Create default group)</source>
++ <translation>(Create Default Group)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="324"/>
+- <source>No, Don&apos;t delete group</source>
+- <translation>No, Don&apos;t delete group</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="435"/>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="457"/>
++ <source>(Create %1 group)</source>
++ <translation>(Create %1 Group)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="437"/>
+- <source>(Create default group)</source>
+- <translation>(Create default group)</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="445"/>
++ <source>(Create new group)</source>
++ <translation>(Create New Group)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="446"/>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="464"/>
+- <source>(Create %1 group)</source>
+- <translation>(Create %1 group)</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="473"/>
++ <source>Enter the name of the new storage group</source>
++ <translation>Enter group name:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmyth/storagegroupeditor.cpp" line="454"/>
+- <source>(Create new group)</source>
+- <translation>(Create new group)</translation>
++ <location filename="../libs/libmyth/storagegroupeditor.cpp" line="490"/>
++ <source> Storage Group Directories</source>
++ <translation> Storage Group Directories</translation>
+ </message>
+ </context>
+ <context>
+ <name>TV</name>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1891"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1908"/>
+ <source>MythTV wants to record &quot;%1&quot; on %2 in %d seconds. Do you want to:</source>
+ <translation>MythTV wants to record &quot;%1&quot; on %2 in %d seconds. Do you want to:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1894"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1911"/>
+ <source>Record and watch while it records</source>
+- <translation>Record and watch while it records</translation>
++ <translation>Record and Watch While It Records</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1895"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1912"/>
+ <source>Let it record and go back to the Main Menu</source>
+- <translation>Let it record and go back to the Main Menu</translation>
++ <translation>Let It Record and Go Back to the Main Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1896"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1913"/>
+ <source>Let them record and go back to the Main Menu</source>
+- <translation>Let them record and go back to the Main Menu</translation>
++ <translation>Let Them Record and Go Back to the Main Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1897"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1914"/>
+ <source>Record it later, I want to watch TV</source>
+- <translation>Record it later, I want to watch TV</translation>
++ <translation>Record It Later, I Want to Watch TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1898"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1915"/>
+ <source>Record them later, I want to watch TV</source>
+- <translation>Record them later, I want to watch TV</translation>
++ <translation>Record Them Later, I Want to Watch TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1899"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1916"/>
+ <source>Don&apos;t let it record, I want to watch TV</source>
+- <translation>Don&apos;t let it record, I want to watch TV</translation>
++ <translation>Don&apos;t Let It Record, I Want to Watch TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1900"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1917"/>
+ <source>Don&apos;t let them record, I want to watch TV</source>
+- <translation>Don&apos;t let them record, I want to watch TV</translation>
++ <translation>Don&apos;t Let Them Record, I Want to Watch TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2556"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2573"/>
+ <source>%1 Settings</source>
+ <translation>%1 Settings</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2948"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2980"/>
+ <source>Last Program: %1 Doesn&apos;t Exist</source>
+ <translation>Last Program: %1 Doesn&apos;t Exist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="3520"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="3554"/>
+ <source>End Of Recording</source>
+- <translation>End Of Recording</translation>
++ <translation>End of Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4324"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4353"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4370"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4369"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4398"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4415"/>
+ <source>Zoom Committed</source>
+ <translation>Zoom Committed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4375"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4420"/>
+ <source>Zoom Ignored</source>
+ <translation>Zoom Ignored</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6765"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12145"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13088"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13116"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6857"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12223"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13181"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13188"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13216"/>
+ <source>Jump Back</source>
+ <translation>Jump Back</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5320"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6680"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5380"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6770"/>
+ <source>Skip Back</source>
+ <translation>Skip Back</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4606"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4651"/>
+ <source>Seek:</source>
+ <translation>Seek:</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5953"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6019"/>
+ <source>Sorry, PBP only supports %n video stream(s)</source>
+ <translation>
+ <numerusform>Sorry, PBP only supports %n video stream</numerusform>
+@@ -22173,7 +22432,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5960"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6026"/>
+ <source>Sorry, PIP only supports %n video stream(s)</source>
+ <translation>
+ <numerusform>Sorry, PIP only supports %n video stream</numerusform>
+@@ -22181,268 +22440,269 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6642"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6732"/>
+ <source>Forward</source>
+ <translation>Forward</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5316"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6687"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6691"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5376"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6777"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6781"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13169"/>
+ <source>Skip Ahead</source>
+ <translation>Skip Ahead</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6641"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6731"/>
+ <source>Rewind</source>
+ <translation>Rewind</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6762"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12140"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13076"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13161"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6854"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12218"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13162"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13261"/>
+ <source>Jump Ahead</source>
+ <translation>Jump Ahead</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4647"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4692"/>
+ <source>Jump to Bookmark</source>
+ <translation>Jump to Bookmark</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4653"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5312"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4698"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5372"/>
+ <source>Jump to Beginning</source>
+ <translation>Jump to Beginning</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6744"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6779"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6836"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6871"/>
+ <source>Jump To</source>
+ <translation>Jump To</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5982"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6048"/>
+ <source>Creating PBP</source>
+ <translation>Creating PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1638"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1639"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1654"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1655"/>
+ <source>External Subtitles</source>
+ <translation>External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5078"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13427"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5138"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13527"/>
+ <source>Are you sure you want to delete:</source>
+ <translation>Are you sure you want to delete:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5982"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6048"/>
+ <source>Creating PIP</source>
+ <translation>Creating PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5983"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6049"/>
+ <source>Cannot create PBP</source>
+ <translation>Cannot create PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5983"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6049"/>
+ <source>Cannot create PIP</source>
+ <translation>Cannot create PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6002"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6068"/>
+ <source>Stopping PIP</source>
+ <translation>Stopping PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6002"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6068"/>
+ <source>Stopping PBP</source>
+ <translation>Stopping PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6012"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6078"/>
+ <source>Stopping all PIPs</source>
+- <translation>Stopping all PIPs</translation>
++ <translation>Stopping All PIPs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6012"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6078"/>
+ <source>Stopping all PBPs</source>
+- <translation>Stopping all PBPs</translation>
++ <translation>Stopping All PBPs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6059"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6125"/>
+ <source>Too many views to switch</source>
+- <translation>Too many views to switch</translation>
++ <translation>Too Many Views to Switch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6474"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8040"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6544"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8121"/>
+ <source>Paused</source>
+ <translation>Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6476"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6546"/>
+ <source>Aux Paused</source>
+ <translation>Aux Paused</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6815"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6907"/>
+ <source>Speed 16X</source>
+ <translation>Speed 16X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6816"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6908"/>
+ <source>Speed 8X</source>
+ <translation>Speed 8X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6817"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6909"/>
+ <source>Speed 3X</source>
+ <translation>Speed 3X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6818"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6910"/>
+ <source>Speed 2X</source>
+ <translation>Speed 2X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6820"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6912"/>
+ <source>Speed 1/3X</source>
+ <translation>Speed 1/3X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6821"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6913"/>
+ <source>Speed 1/8X</source>
+ <translation>Speed 1/8X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6822"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6914"/>
+ <source>Speed 1/16X</source>
+ <translation>Speed 1/16X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6926"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7018"/>
+ <source>Forward %1X</source>
+ <translation>Forward %1X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6936"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7028"/>
+ <source>Rewind %1X</source>
+ <translation>Rewind %1X</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6975"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7067"/>
+ <source>Stopping Transcode</source>
+ <translation>Stopping Transcode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6993"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7085"/>
+ <source>Transcoding</source>
+ <translation>Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="6986"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7078"/>
+ <source>Try Again</source>
+ <translation>Try Again</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7036"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7128"/>
+ <source>Jump Chapter</source>
+ <translation>Jump Chapter</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7139"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7231"/>
+ <source>Switch Angle</source>
+ <translation>Switch Angle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7160"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7252"/>
+ <source>Skip</source>
+ <translation>Skip</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7584"/>
+ <source>TXT:</source>
+ <translation>TXT:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7584"/>
+ <source>CC:</source>
+ <translation>CC:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7504"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7588"/>
+ <source>Seek:</source>
+ <comment>seek to location</comment>
+ <translation>Seek:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5011"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8040"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5062"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8121"/>
+ <source>Position</source>
+ <translation>Position</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8298"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8378"/>
+ <source>Partial Lock</source>
+ <translation>Partial Lock</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8298"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8378"/>
+ <source>No Lock</source>
+ <translation>No Lock</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8299"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8379"/>
+ <source>Lock</source>
+ <translation>Lock</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8301"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8381"/>
+ <source>Signal %1%</source>
+ <translation>Signal %1%</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8303"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8383"/>
+ <source>S/N %1dB</source>
+ <translation>S/N %1dB</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8305"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8385"/>
+ <source>BE %1</source>
+ <comment>Bit Errors</comment>
+ <translation>BE %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8307"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8387"/>
+ <source>Rotor %1%</source>
+ <translation>Rotor %1%</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8391"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8471"/>
+ <source>You should have received a channel lock by now. You can continue to wait for a signal, or you can change the channel with %1 or %2, change video source (%3), inputs (%4), etc.</source>
+ <translation>You should have received a channel lock by now. You can continue to wait for a signal, or you can change the channel with %1 or %2, change video source (%3), inputs (%4), etc.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8400"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12964"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13342"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8480"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13049"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13442"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8447"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11799"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11800"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11801"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11802"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8527"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11865"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11866"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11867"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11868"/>
+ <location filename="../libs/libmythtv/tvbrowsehelper.cpp" line="26"/>
+- <location filename="../libs/libmythtv/tvbrowsehelper.cpp" line="310"/>
++ <location filename="../libs/libmythtv/tvbrowsehelper.cpp" line="309"/>
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n minute</numerusform>
+@@ -22450,425 +22710,430 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8467"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8964"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8547"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8952"/>
+ <source>DVD</source>
+ <translation>DVD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8472"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8552"/>
+ <source>Menu</source>
+ <translation>Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8476"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8556"/>
+ <source>Still Frame</source>
+ <translation>Still Frame</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8487"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8567"/>
+ <source>Title: %1 (%2)</source>
+ <translation>Title: %1 (%2)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8488"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8568"/>
+ <source>Chapter: %1/%2</source>
+ <translation>Chapter: %1/%2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5440"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8950"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10181"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8938"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10206"/>
+ <source>Adjust Volume</source>
+ <translation>Adjust Volume</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2434"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2489"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2451"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2506"/>
+ <source>TV Player</source>
+ <translation>TV Player</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1098"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1116"/>
+ <source>Off</source>
+ <comment>Sleep timer</comment>
+ <translation>Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1099"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1117"/>
+ <source>30m</source>
+ <comment>Sleep timer</comment>
+ <translation>30m</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1100"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1118"/>
+ <source>1h</source>
+ <comment>Sleep timer</comment>
+ <translation>1h</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1101"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1119"/>
+ <source>1h30m</source>
+ <comment>Sleep timer</comment>
+ <translation>1h30m</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="1102"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="1120"/>
+ <source>2h</source>
+ <comment>Sleep timer</comment>
+ <translation>2h</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2037"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2054"/>
+ <source>MythTV wants to record these programs in %d seconds:</source>
+ <translation>MythTV wants to record these programs in %d seconds:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2063"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2080"/>
+ <source>&quot;%1&quot; on %2</source>
+ <translation>&quot;%1&quot; on %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2076"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2093"/>
+ <source>Do you want to:</source>
+ <translation>Do you want to:</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="2433"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="2450"/>
+ <source>Can&apos;t start playback</source>
+- <translation>Can&apos;t start playback</translation>
++ <translation>Can&apos;t Start Playback</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4380"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="4425"/>
+ <source>%1 Committed</source>
+ <translation>%1 Committed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5004"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5055"/>
+ <source>Bookmark Cleared</source>
+ <translation>Bookmark Cleared</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5014"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5065"/>
+ <source>Bookmark Saved</source>
+ <translation>Bookmark Saved</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9031"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12515"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9019"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12603"/>
+ <source>Adjust Time Stretch</source>
+ <translation>Adjust Time Stretch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9061"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9049"/>
+ <source>Upmixer On</source>
+ <translation>Upmixer On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9061"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9049"/>
+ <source>Upmixer Off</source>
+ <translation>Upmixer Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9125"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12035"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9113"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12113"/>
+ <source>Adjust Subtitle Delay</source>
+ <translation>Adjust Subtitle Delay</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9125"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9113"/>
+ <source>Subtitle Delay</source>
+ <translation>Subtitle Delay</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9154"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9142"/>
+ <source>Audio Sync</source>
+ <translation>Audio Sync</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9154"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11931"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9142"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12001"/>
+ <source>Adjust Audio Sync</source>
+ <translation>Adjust Audio Sync</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9189"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9177"/>
+ <source>Mute Off</source>
+ <translation>Mute Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9190"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9178"/>
+ <source>Mute On</source>
+ <translation>Mute On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9191"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9179"/>
+ <source>Left Channel Muted</source>
+ <translation>Left Channel Muted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9192"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9180"/>
+ <source>Right Channel Muted</source>
+ <translation>Right Channel Muted</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9220"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9209"/>
+ <source>Sleep </source>
+ <translation>Sleep </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9235"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9224"/>
+ <source>MythTV was set to sleep after %1 minutes and will exit in %d seconds.
+ Do you wish to continue watching?</source>
+ <translation>MythTV was set to sleep after %1 minutes and will exit in %d seconds.
+ Do you wish to continue watching?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9242"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9305"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9231"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9294"/>
+ <source>Yes</source>
+ <translation>Yes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9243"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9306"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9232"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9295"/>
+ <source>No</source>
+ <translation>No</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9299"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9288"/>
+ <source>MythTV has been idle for %1 minutes and will exit in %d seconds. Are you still watching?</source>
+ <translation>MythTV has been idle for %1 minutes and will exit in %d seconds. Are you still watching?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9672"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9694"/>
+ <source>PiP</source>
+ <comment>Picture-in-Picture</comment>
+- <translation>PiP</translation>
++ <translation>PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9673"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9695"/>
+ <source>PbP</source>
+ <comment>Picture-by-Picture</comment>
+- <translation>PbP</translation>
++ <translation>PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9675"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9697"/>
+ <source>Disabling %1 for recording</source>
+- <translation>Disabling %1 for recording</translation>
++ <translation>Disabling %1 for Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10017"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10040"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10042"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10065"/>
+ <source>Record</source>
+ <translation>Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10052"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10077"/>
+ <source>Cancel Record</source>
+ <translation>Cancel Record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10276"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10301"/>
+ <source>Active Changed</source>
+ <translation>Active Changed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10289"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10304"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12533"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10314"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10329"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12621"/>
+ <source>Edit Cut Points</source>
+ <translation>Edit Cut Points</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10323"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10348"/>
+ <source>Exit Recording Editor</source>
+ <translation>Exit Recording Editor</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10324"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11585"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10349"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11650"/>
+ <source>Save Cuts and Exit</source>
+ <translation>Save Cuts and Exit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10326"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11577"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10351"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11642"/>
+ <source>Exit Without Saving</source>
+ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10328"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11581"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10353"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11646"/>
+ <source>Save Cuts</source>
+ <translation>Save Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10330"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11573"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10355"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11638"/>
+ <source>Undo Changes</source>
+ <translation>Undo Changes</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10393"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10418"/>
+ <source>This program is currently being edited</source>
+ <translation>This program is currently being edited</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10396"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10421"/>
+ <source>Continue Editing</source>
+ <translation>Continue Editing</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10397"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10422"/>
+ <source>Do not edit</source>
+- <translation>Do not edit</translation>
++ <translation>Do Not Edit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10577"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10616"/>
+ <source>UNKNOWN%1</source>
+ <comment>Synthesized callsign</comment>
+ <translation>UNKNOWN%1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10903"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10945"/>
+ <source>Zoom Mode ON</source>
+- <translation>Zoom Mode ON</translation>
++ <translation>Zoom Mode On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11565"/>
+ <source>Move Previous Cut End Here</source>
+ <translation>Move Previous Cut End Here</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11501"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11566"/>
+ <source>Move Start of Cut Here</source>
+ <translation>Move Start of Cut Here</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11512"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11577"/>
+ <source>Move Next Cut Start Here</source>
+ <translation>Move Next Cut Start Here</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11513"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11578"/>
+ <source>Move End of Cut Here</source>
+ <translation>Move End of Cut Here</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11521"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11586"/>
+ <source>Cut to Beginning</source>
+ <translation>Cut to Beginning</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11529"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11594"/>
+ <source>Cut to End</source>
+ <translation>Cut to End</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11535"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11600"/>
+ <source>Delete This Cut</source>
+ <translation>Delete This Cut</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11536"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11601"/>
+ <source>Join Surrounding Cuts</source>
+ <translation>Join Surrounding Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11541"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11606"/>
+ <source>Add New Cut</source>
+ <translation>Add New Cut</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11547"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11612"/>
+ <source>Undo - %1</source>
+ <extracomment>%1 is the undo message</extracomment>
+ <translation>Undo - %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11555"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11620"/>
+ <source>Redo - %1</source>
+ <extracomment>%1 is the redo message</extracomment>
+ <translation>Redo - %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11561"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11626"/>
+ <source>Clear Cuts</source>
+ <translation>Clear Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11565"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11630"/>
+ <source>Reverse Cuts</source>
+ <translation>Reverse Cuts</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11569"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11634"/>
+ <source>Load Detected Commercials</source>
+ <translation>Load Detected Commercials</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11778"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11844"/>
+ <source>0.5x</source>
+ <translation>0.5x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11779"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11845"/>
+ <source>0.9x</source>
+ <translation>0.9x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11780"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11846"/>
+ <source>1.0x</source>
+ <translation>1.0x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11781"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11847"/>
+ <source>1.1x</source>
+ <translation>1.1x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11782"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11848"/>
+ <source>1.2x</source>
+ <translation>1.2x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11783"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11849"/>
+ <source>1.3x</source>
+ <translation>1.3x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11784"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11850"/>
+ <source>1.4x</source>
+ <translation>1.4x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11785"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11851"/>
+ <source>1.5x</source>
+ <translation>1.5x</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11981"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12021"/>
++ <source>Enable Audio Upmixer</source>
++ <translation>Enable Audio Upmixer</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12059"/>
+ <source>Disable Subtitles</source>
+ <translation>Disable Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11987"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12065"/>
+ <source>Enable Subtitles</source>
+ <translation>Enable Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11995"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12073"/>
+ <source>Disable Forced Subtitles</source>
+ <translation>Disable Forced Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12004"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12082"/>
+ <source>Enable Forced Subtitles</source>
+ <translation>Enable Forced Subtitles</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12093"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12171"/>
+ <source>Close PIP(s)</source>
+ <translation>
+ <numerusform>Close PIP</numerusform>
+@@ -22876,7 +23141,7 @@
+ </translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12103"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12181"/>
+ <source>Close PBP(s)</source>
+ <translation>
+ <numerusform>Close PBP</numerusform>
+@@ -22884,701 +23149,715 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12135"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12213"/>
+ <source>Playback Data</source>
+ <translation>Playback Data</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12152"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12230"/>
+ <source>DVD Root Menu</source>
+ <translation>DVD Root Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12163"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12245"/>
+ <source>DVD Title Menu</source>
+ <translation>DVD Title Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12168"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12250"/>
+ <source>DVD Chapter Menu</source>
+ <translation>DVD Chapter Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12496"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12547"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12584"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12635"/>
+ <source>Playback Compact Menu</source>
+ <translation>Playback Compact Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12524"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12040"/>
++ <source>Move BottomLine off screen</source>
++ <translation>Move Bottom Line Off Screen</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12044"/>
++ <source>Save manual zoom for BottomLine</source>
++ <translation>Save Manual Zoom for Bottom Line</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12235"/>
++ <source>Jump to bookmark</source>
++ <translation>Jump to Bookmark</translation>
++ </message>
++ <message>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12612"/>
+ <source>Schedule</source>
+ <translation>Schedule</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12177"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12259"/>
+ <source>Program Guide</source>
+ <translation>Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12217"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12299"/>
+ <source>Edit Channel</source>
+ <translation>Edit Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12217"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12299"/>
+ <source>Edit Recording</source>
+ <translation>Edit Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12526"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12614"/>
+ <source>Jump to Program</source>
+ <translation>Jump to Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12193"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12574"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12275"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12662"/>
+ <source>Recorded Program</source>
+ <translation>Recorded Program</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12173"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12255"/>
+ <source>Previous Channel</source>
+ <translation>Previous Channel</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12022"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12100"/>
+ <source>Toggle Teletext Menu</source>
+ <translation>Toggle Teletext Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11966"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12036"/>
+ <source>Manual Zoom Mode</source>
+ <translation>Manual Zoom Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12518"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12606"/>
+ <source>Channel Groups</source>
+ <translation>Channel Groups</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11809"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11875"/>
+ <source>All Channels</source>
+ <translation>All Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12234"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12316"/>
+ <source>Stop Transcoding</source>
+ <translation>Stop Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12530"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12618"/>
+ <source>Begin Transcoding</source>
+ <translation>Begin Transcoding</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7161"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7253"/>
+ <source>Searching</source>
+- <translation>Searching</translation>
++ <translation>Searching...</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5440"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8950"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8938"/>
+ <source>Volume</source>
+ <translation>Volume</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9031"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9019"/>
+ <source>Time Stretch</source>
+ <translation>Time Stretch</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="10334"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12485"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="10359"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12573"/>
+ <source>Edit</source>
+ <translation>Edit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12234"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12316"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12242"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12324"/>
+ <source>Autodetect</source>
+ <translation>Autodetect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12250"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12332"/>
+ <source>High Quality</source>
+ <translation>High Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12258"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12340"/>
+ <source>Medium Quality</source>
+ <translation>Medium Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12266"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12348"/>
+ <source>Low Quality</source>
+ <translation>Low Quality</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12520"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12608"/>
+ <source>Commercial Auto-Skip</source>
+- <translation>Commercial Auto-Skip</translation>
++ <translation>Commercial Auto-skip</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12226"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12308"/>
+ <source>Turn Auto-Expire OFF</source>
+- <translation>Turn Auto-Expire OFF</translation>
++ <translation>Turn Auto-expire Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12226"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12308"/>
+ <source>Turn Auto-Expire ON</source>
+- <translation>Turn Auto-Expire ON</translation>
++ <translation>Turn Auto-expire On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12185"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12267"/>
+ <source>Upcoming Recordings</source>
+ <translation>Upcoming Recordings</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12181"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12263"/>
+ <source>Program Finder</source>
+ <translation>Program Finder</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12189"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12271"/>
+ <source>Edit Recording Schedule</source>
+ <translation>Edit Recording Schedule</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12521"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12609"/>
+ <source>Chapter</source>
+ <translation>Chapter</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="5965"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="6031"/>
+ <source>Sorry, cannot mix PBP and PIP views</source>
+- <translation>Sorry, cannot mix PBP and PIP views</translation>
++ <translation>Cannot Mix PBP and PIP Views</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12495"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12543"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12583"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12631"/>
+ <source>Playback Menu</source>
+ <translation>Playback Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12497"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12585"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8958"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12500"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8946"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12588"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="4954"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="5005"/>
+ <source>Visualisation Off</source>
+- <translation>Visualisation Off</translation>
++ <translation>Visualization Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="8961"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="8949"/>
+ <source>TV</source>
+ <translation>TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9087"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12027"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9075"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12105"/>
+ <source>Adjust Subtitle Zoom</source>
+ <translation>Adjust Subtitle Zoom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="9087"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="9075"/>
+ <source>Subtitle Zoom</source>
+ <translation>Subtitle Zoom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12505"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12593"/>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12507"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12595"/>
+ <source>Deinterlacer</source>
+ <translation>Deinterlacer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12508"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12596"/>
+ <source>Subtitles</source>
+ <translation>Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12510"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12598"/>
+ <source>Text Subtitles</source>
+ <translation>Text Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12513"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12601"/>
+ <source>Select Teletext CC</source>
+ <translation>Select Teletext CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12519"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12607"/>
+ <source>Navigate</source>
+ <translation>Navigate</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12152"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12230"/>
+ <source>Top menu</source>
+- <translation>Top menu</translation>
++ <translation>Top Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12158"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12240"/>
+ <source>Popup menu</source>
+- <translation>Popup menu</translation>
++ <translation>Popup Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12522"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12610"/>
+ <source>Angle</source>
+ <translation>Angle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12523"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12611"/>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12525"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12613"/>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12529"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12617"/>
+ <source>Jobs</source>
+ <translation>Jobs</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12514"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12602"/>
+ <source>Playback</source>
+ <translation>Playback</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12041"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12119"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12041"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12119"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12516"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12604"/>
+ <source>Picture-in-Picture</source>
+ <translation>Picture-in-Picture</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12126"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12204"/>
+ <source>Toggle Browse Mode</source>
+ <translation>Toggle Browse Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12131"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12209"/>
+ <source>Cancel Playlist</source>
+ <translation>Cancel Playlist</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12053"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12131"/>
+ <source>Open Live TV PIP</source>
+ <translation>Open Live TV PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12062"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12140"/>
+ <source>Open Live TV PBP</source>
+ <translation>Open Live TV PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12070"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12148"/>
+ <source>Open Recording PIP</source>
+ <translation>Open Recording PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12078"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12156"/>
+ <source>Open Recording PBP</source>
+ <translation>Open Recording PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12084"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12162"/>
+ <source>Change Active Window</source>
+ <translation>Change Active Window</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12110"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12188"/>
+ <source>Swap Windows</source>
+ <translation>Swap Windows</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12120"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12198"/>
+ <source>Switch to PIP</source>
+ <translation>Switch to PIP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12120"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12198"/>
+ <source>Switch to PBP</source>
+ <translation>Switch to PBP</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13386"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13486"/>
+ <source>No, keep it</source>
+- <translation>No, keep it</translation>
++ <translation>Keep</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12527"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12615"/>
+ <source>Switch Input</source>
+ <translation>Switch Input</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12528"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12616"/>
+ <source>Switch Source</source>
+ <translation>Switch Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12501"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12589"/>
+ <source>Change Aspect Ratio</source>
+ <translation>Change Aspect Ratio</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12502"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12590"/>
+ <source>Adjust Fill</source>
+ <translation>Adjust Fill</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11951"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11961"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12031"/>
+ <source>Auto Detect</source>
+ <translation>Auto Detect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12503"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12591"/>
+ <source>Adjust Picture</source>
+ <translation>Adjust Picture</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="7123"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="7215"/>
+ <source>Switch Title</source>
+ <translation>Switch Title</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12499"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12587"/>
+ <source>Visualisation</source>
+ <translatorcomment>Original string is in British English</translatorcomment>
+ <translation>Visualization</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11943"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12013"/>
+ <source>Disable Audio Upmixer</source>
+ <translation>Disable Audio Upmixer</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11696"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11936"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11761"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12006"/>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12504"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12592"/>
+ <source>3D</source>
+ <translation>3D</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11974"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12052"/>
+ <source>Disable Night Mode</source>
+ <translation>Disable Night Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11974"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12052"/>
+ <source>Enable Night Mode</source>
+ <translation>Enable Night Mode</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11698"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11763"/>
+ <source>Side by Side</source>
+ <translation>Side by Side</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11700"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11765"/>
+ <source>Discard Side by Side</source>
+ <translation>Discard Side by Side</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11702"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11767"/>
+ <source>Top and Bottom</source>
+ <translation>Top and Bottom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11704"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11769"/>
+ <source>Discard Top and Bottom</source>
+ <translation>Discard Top and Bottom</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12011"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12089"/>
+ <source>Disable External Subtitles</source>
+ <translation>Disable External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12017"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12095"/>
+ <source>Enable External Subtitles</source>
+ <translation>Enable External Subtitles</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12045"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12123"/>
+ <source>Toggle</source>
+ <translation>Toggle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11777"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11843"/>
+ <source>Adjust</source>
+ <translation>Adjust</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12429"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12517"/>
+ <source>(I)</source>
+ <comment>Interlaced (Normal)</comment>
+ <translation>(I)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12431"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12519"/>
+ <source>(i)</source>
+ <comment>Interlaced (Reversed)</comment>
+ <translation>(i)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12433"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12521"/>
+ <source>(P)</source>
+ <comment>Progressive</comment>
+ <translation>(P)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12942"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13027"/>
+ <source>MythTV is already using all available inputs for the channel you selected. If you want to watch an in-progress recording, select one from the playback menu. If you want to watch Live TV, cancel one of the in-progress recordings from the delete menu.</source>
+- <translation>MythTV is already using all available inputs for the channel you selected. If you want to watch an in-progress recording, select one from the playback menu. If you want to watch Live TV, cancel one of the in-progress recordings from the delete menu.</translation>
++ <translation>MythTV is already using all available inputs for the channel you selected. If you want to watch an in-progress recording, select one from the playback menu. If you want to watch Live TV, cancel one of the in-progress recordings from the delete menu.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12506"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12594"/>
+ <source>Video Scan</source>
+ <translation>Video Scan</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11710"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11775"/>
+ <source>Detect</source>
+ <translation>Detect</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11712"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11777"/>
+ <source>Progressive</source>
+ <translation>Progressive</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11714"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11779"/>
+ <source>Interlaced (Normal)</source>
+ <translation>Interlaced (Normal)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11716"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11781"/>
+ <source>Interlaced (Reversed)</source>
+ <translation>Interlaced (Reversed)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12517"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12929"/>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12931"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12605"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13014"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13016"/>
+ <source>Sleep</source>
+ <translation>Sleep</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="11798"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="11864"/>
+ <source>Sleep Off</source>
+ <translation>Sleep Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12498"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12586"/>
+ <source>Select Audio Track</source>
+ <translation>Select Audio Track</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12509"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12597"/>
+ <source>Select Subtitle</source>
+ <translation>Select Subtitle</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12512"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12600"/>
+ <source>Select VBI CC</source>
+ <translation>Select VBI CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12511"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12599"/>
+ <source>Select ATSC CC</source>
+ <translation>Select ATSC CC</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12534"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12622"/>
+ <source>Edit Cut Points (Compact)</source>
+ <translation>Edit Cut Points (Compact)</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12535"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12623"/>
+ <source>Cut List Options</source>
+ <translation>Cut List Options</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12703"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12789"/>
+ <source>Auto-Expire OFF</source>
+- <translation>Auto-Expire OFF</translation>
++ <translation>Auto-expire Off</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12708"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="12794"/>
+ <source>Auto-Expire ON</source>
+- <translation>Auto-Expire ON</translation>
++ <translation>Auto-expire On</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12951"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13036"/>
+ <source>Error: MythTV is using all inputs, but there are no active recordings?</source>
+- <translation>Error: MythTV is using all inputs, but there are no active recordings?</translation>
++ <translation>ERROR: MythTV is using all inputs, but there are no active recordings?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="12955"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13040"/>
+ <source>MythTV has no capture cards defined. Please run the mythtv-setup program.</source>
+ <translation>MythTV has no capture cards defined. Please run the mythtv-setup program.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13104"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13204"/>
+ <source>Skip Back Not Allowed</source>
+ <translation>Skip Back Not Allowed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13127"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13227"/>
+ <source>Previous Title</source>
+ <translation>Previous Title</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13146"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13246"/>
+ <source>Skip Still Frame</source>
+ <translation>Skip Still Frame</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13172"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13272"/>
+ <source>Next Title</source>
+ <translation>Next Title</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13235"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13335"/>
+ <source>Live TV</source>
+ <translation>Live TV</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13237"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13337"/>
+ <source>this DVD</source>
+ <translation>this DVD</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13241"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13341"/>
+ <source>this Video</source>
+ <translation>this Video</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13245"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13345"/>
+ <source>this recording</source>
+- <translation>this recording</translation>
++ <translation>this Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13251"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13351"/>
+ <source>You are exiting %1</source>
+- <translation>You are exiting %1</translation>
++ <translation>You Are Exiting %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13255"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13355"/>
+ <source>Save this position and go to the menu</source>
+- <translation>Save this position and go to the menu</translation>
++ <translation>Save and Exit</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13257"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13357"/>
+ <source>Do not save, just exit to the menu</source>
+- <translation>Do not save, just exit to the menu</translation>
++ <translation>Exit Without Saving</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13261"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13361"/>
+ <source>Exit %1</source>
+ <translation>Exit %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13265"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13365"/>
+ <source>Delete this recording</source>
+ <translation>Delete this recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13268"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13368"/>
+ <source>Keep watching</source>
+ <translation>Keep watching</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13314"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13414"/>
+ <source>Cannot delete program </source>
+- <translation>Cannot delete program </translation>
++ <translation>Cannot delete </translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13323"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13423"/>
+ <source>because it is not a recording.</source>
+ <translation>because it is not a recording.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13327"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13427"/>
+ <source>because it is in use by</source>
+ <translation>because it is in use by</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13373"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13473"/>
+ <source>Delete it, but allow it to re-record</source>
+- <translation>Delete it, but allow it to re-record</translation>
++ <translation>Delete Recording, and Allow Re-record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13375"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13475"/>
+ <source>Delete it</source>
+- <translation>Delete it</translation>
++ <translation>Delete Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13377"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13477"/>
+ <source>Save it so I can watch it again</source>
+- <translation>Save it so I can watch it again</translation>
++ <translation>Keep Recording</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13382"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13482"/>
+ <source>Yes, and allow re-record</source>
+- <translation>Yes, and allow re-record</translation>
++ <translation>Delete and Allow Re-record</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_play.cpp" line="13384"/>
++ <location filename="../libs/libmythtv/tv_play.cpp" line="13484"/>
+ <source>Yes, delete it</source>
+- <translation>Yes, delete it</translation>
++ <translation>Delete</translation>
+ </message>
+ </context>
+ <context>
+ <name>TVRec</name>
+ <message>
+- <location filename="../libs/libmythtv/tv_rec.cpp" line="3934"/>
++ <location filename="../libs/libmythtv/tv_rec.cpp" line="3947"/>
+ <source>Good signal seen after %1 ms</source>
+ <translation>Good signal seen after %1 ms</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_rec.cpp" line="3943"/>
+- <location filename="../libs/libmythtv/tv_rec.cpp" line="3995"/>
++ <location filename="../libs/libmythtv/tv_rec.cpp" line="3956"/>
++ <location filename="../libs/libmythtv/tv_rec.cpp" line="4011"/>
+ <source>See &apos;Tuning timeout&apos; in mythtv-setup for this input.</source>
+ <translation>See &apos;Tuning timeout&apos; in mythtv-setup for this input.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/tv_rec.cpp" line="3987"/>
++ <location filename="../libs/libmythtv/tv_rec.cpp" line="4003"/>
+ <source>Taking more than %1 ms to get a lock.</source>
+ <translation>Taking more than %1 ms to get a lock.</translation>
+ </message>
+@@ -23586,133 +23865,133 @@
+ <context>
+ <name>ThemeChooser</name>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="533"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="536"/>
+ <source>Theme Chooser Menu</source>
+ <translation>Theme Chooser Menu</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="152"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="148"/>
+ <source>Loading Installed Themes</source>
+- <translation>Loading Installed Themes</translation>
++ <translation>Loading Installed Themes...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="271"/>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="286"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="277"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="289"/>
+ <source>Unable to create &apos;%1&apos;</source>
+ <translation>Unable to create &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="275"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="281"/>
+ <source>Refreshing Downloadable Themes Information</source>
+- <translation>Refreshing Downloadable Themes Information</translation>
++ <translation>Refreshing Downloadable Themes Information...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="283"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="286"/>
+ <source>Unable to remove &apos;%1&apos;</source>
+ <translation>Unable to remove &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="292"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="295"/>
+ <source>Extracting Downloadable Themes Information</source>
+- <translation>Extracting Downloadable Themes Information</translation>
++ <translation>Extracting Downloadable Themes Information...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="307"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="310"/>
+ <source>Failed to download &apos;%1&apos;</source>
+- <translation>Failed to download &apos;%1&apos;</translation>
++ <translation>Failed to Download &apos;%1&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="315"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="318"/>
+ <source>Failed to unzip &apos;%1&apos; to &apos;%2&apos;</source>
+- <translation>Failed to unzip &apos;%1&apos; to &apos;%2&apos;</translation>
++ <translation>Failed to Unzip &apos;%1&apos; to &apos;%2&apos;</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="333"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="336"/>
+ <source>Loading Downloadable Themes</source>
+- <translation>Loading Downloadable Themes</translation>
++ <translation>Loading Downloadable Themes...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="496"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="499"/>
+ <source>Error creating test file, %1 themes directory is not writable.</source>
+ <translation>Error creating test file, %1 themes directory is not writable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="554"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="557"/>
+ <source>Hide Fullscreen Preview</source>
+ <translation>Hide Fullscreen Preview</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="557"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="560"/>
+ <source>Show Fullscreen Preview</source>
+ <translation>Show Fullscreen Preview</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="561"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="564"/>
+ <source>Refresh Downloadable Themes</source>
+ <translation>Refresh Downloadable Themes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="571"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="574"/>
+ <source>Select Theme</source>
+ <translation>Select Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="575"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="578"/>
+ <source>Delete Theme</source>
+ <translation>Delete Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="581"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="584"/>
+ <source>Disable Theme Update Notifications</source>
+ <translation>Disable Theme Update Notifications</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="584"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="587"/>
+ <source>Enable Theme Update Notifications</source>
+ <translation>Enable Theme Update Notifications</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="704"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="706"/>
+ <source>Unable to install theme, %1 themes directory is not writable.</source>
+ <translation>Unable to install theme, %1 themes directory is not writable.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="725"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="727"/>
+ <source>Downloading %1 Theme</source>
+ <translation>Downloading %1 Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="866"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="868"/>
+ <source>Copying %1 Theme Package</source>
+ <translation>Copying %1 Theme Package</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="875"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="877"/>
+ <source>ERROR downloading theme package on master backend.</source>
+- <translation>ERROR downloading theme package on master backend.</translation>
++ <translation>ERROR: Downloading theme package on master backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="896"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="898"/>
+ <source>Installing %1 Theme</source>
+ <translation>Installing %1 Theme</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="902"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="904"/>
+ <source>ERROR downloading theme package from master backend.</source>
+- <translation>ERROR downloading theme package from master backend.</translation>
++ <translation>ERROR: Downloading theme package from master backend.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="940"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="942"/>
+ <source>Error, no theme selected.</source>
+- <translation>Error, no theme selected.</translation>
++ <translation>ERROR: No theme selected.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="947"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="949"/>
+ <source>Error, unable to find current theme.</source>
+- <translation>Error, unable to find current theme.</translation>
++ <translation>ERROR: Unable to find current theme.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="953"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="955"/>
+ <source>%1 is not a user-installed theme and can not be deleted.</source>
+ <translation>%1 is not a user-installed theme and can not be deleted.</translation>
+ </message>
+@@ -23976,7 +24255,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="718"/>
+ <source>To manually schedule a recording, enter a title (optional). Then set the channel, date, start time, and duration of your recording. Note that this recording will not have any listings data or other information provided by an EPG.</source>
+- <translation>To manually schedule a recording, enter a title (optional). Then set the channel, date, start time, and duration of your recording. Note that this recording will not have any listings data or other information provided by an EPG.</translation>
++ <translation>To manually schedule a recording, enter a title (optional). Then set the channel, date, start time, and duration of your recording. Note that this recording will not have any listings data or other information provided by an EPG.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="851"/>
+@@ -24130,7 +24409,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="729"/>
+ <source>Below you will find the program details of the selected item. There are two available screens. You can toggle between them by pressing INFO.</source>
+- <translation>Below you will find the program details of the selected item. There are two available screens. You can toggle between them by pressing INFO.</translation>
++ <translation>Below you will find the program details of the selected item. There are two available screens. You can toggle between them by pressing INFO.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="866"/>
+@@ -24317,7 +24596,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="890"/>
+ <source>Allow Recordings to Auto-Expire</source>
+- <translation>Allow Recordings to Auto-Expire</translation>
++ <translation>Allow Recordings to Auto-expire</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="891"/>
+@@ -24397,7 +24676,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="908"/>
+ <source>Type your tweet below. Select &quot;Send&quot; to submit it.</source>
+- <translation>Type your tweet below. Select &quot;Send&quot; to submit it.</translation>
++ <translation>Type your tweet below. Select &quot;Send&quot; to submit it.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="909"/>
+@@ -24452,7 +24731,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="390"/>
+ <source>WARNING: There are conflicting scheduled recordings!</source>
+- <translation>WARNING: There are conflicting scheduled recordings!</translation>
++ <translation>Warning: There are conflicting scheduled recordings!</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="954"/>
+@@ -24604,7 +24883,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="994"/>
+ <source>Graphite is a theme emphasizing MythUI interface improvements such as alpha, animation, unique layouts, and user-supplied backdrop content. It is extremely memory-hungry.</source>
+- <translation>Graphite is a theme emphasizing MythUI interface improvements such as alpha, animation, unique layouts, and user-supplied backdrop content. It is extremely memory-hungry.</translation>
++ <translation>Graphite is a theme emphasizing MythUI interface improvements such as alpha, animation, unique layouts, and user-supplied backdrop content. It is extremely memory-hungry.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="1011"/>
+@@ -25307,7 +25586,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="1080"/>
+ <source>Press Up/Down from letter list, to navigate to another list. Press Left/Right from Show or Episode list to navigate to another list.</source>
+- <translation>Press Up/Down from letter list, to navigate to another list. Press Left/Right from Show or Episode list to navigate to another list.</translation>
++ <translation>Press Up/Down from letter list, to navigate to another list. Press Left/Right from Show or Episode list to navigate to another list.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="1083"/>
+@@ -25332,7 +25611,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="1106"/>
+ <source>No videos in library, or no files found. If you have configured a video directory, press MENU and select &quot;Scan for Changes.&quot;</source>
+- <translation>No videos in library, or no files found. If you have configured a video directory, press MENU and select &quot;Scan for Changes.&quot;</translation>
++ <translation>No videos in library, or no files found. If you have configured a video directory, press MENU and select &quot;Scan for Changes.&quot;</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="745"/>
+@@ -25376,7 +25655,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="1122"/>
+ <source>Designed to show off some different element arrangements. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</source>
+- <translation>Designed to show off some different element arrangements. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</translation>
++ <translation>Designed to show off some different element arrangements. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="1123"/>
+@@ -25627,7 +25906,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="1172"/>
+ <source>Protocol-Version: %1</source>
+- <translation>Protocol-Version: %1</translation>
++ <translation>Protocol Version: %1</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="1173"/>
+@@ -25860,7 +26139,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="360"/>
+ <source>Move the selected corner of the preview image to the corner of the TV screen. Press SELECT to edit the other corner. Press MENU for options and ESC to quit.</source>
+- <translation>Move the selected corner of the preview image to the corner of the TV screen. Press SELECT to edit the other corner. Press MENU for options and ESC to quit.</translation>
++ <translation>Move the selected corner of the preview image to the corner of the TV screen. Press SELECT to edit the other corner. Press MENU for options and ESC to quit.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="417"/>
+@@ -26303,7 +26582,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="638"/>
+ <source>Ok</source>
+- <translation>Ok</translation>
++ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="639"/>
+@@ -26423,7 +26702,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="665"/>
+ <source>PCM-BluRay</source>
+- <translation>PCM-BluRay</translation>
++ <translation>PCM-Blu-ray</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="666"/>
+@@ -26618,7 +26897,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="706"/>
+ <source>To create a custom recording rule, either select an existing rule, or create a new rule by typing in a name. Then select a rule type and hit enter. The SQL code will be transferred below, and you can edit it and insert your own program information. Finally, you can test, immediately activate, store, or cancel your rule.</source>
+- <translation>To create a custom recording rule, either select an existing rule, or create a new rule by typing in a name. Then select a rule type and hit enter. The SQL code will be transferred below, and you can edit it and insert your own program information. Finally, you can test, immediately activate, store, or cancel your rule.</translation>
++ <translation>To create a custom recording rule, either select an existing rule, or create a new rule by typing in a name. Then select a rule type and hit enter. The SQL code will be transferred below, and you can edit it and insert your own program information. Finally, you can test, immediately activate, store, or cancel your rule.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="708"/>
+@@ -26902,7 +27181,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="802"/>
+ <source>Let&apos;s set up your DVR! On the next few screens, we will configure your system to play back audio and video, optimize your color and contrast, and make sure we are taking advantage of all of your hardware. Press next to begin!</source>
+- <translation>Let&apos;s set up your DVR! On the next few screens, we will configure your system to play back audio and video, optimize your color and contrast, and make sure we are taking advantage of all of your hardware. Press next to begin!</translation>
++ <translation>Let&apos;s set up your DVR! On the next few screens, we will configure your system to play back audio and video, optimize your color and contrast, and make sure we are taking advantage of all of your hardware. Press next to begin!</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="803"/>
+@@ -27454,7 +27733,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="1103"/>
+ <source>Designed to show off some different element arrangements. Tested at 1280x720 and with Français. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</source>
+- <translation>Designed to show off some different element arrangements. Tested at 1280x720 and with Français. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</translation>
++ <translation>Designed to show off some different element arrangements. Tested at 1280x720 and with Français. Reminder: On Watch Recordings screen [Rew] and [FF] can be used to change the Rec. Group.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="1107"/>
+@@ -28434,7 +28713,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="300"/>
+ <source>No videos in library, or no files found. If you have configured a video directory, press &quot;M&quot; (or the MENU key) and select &quot;Scan for Changes.&quot;</source>
+- <translation>No videos in library, or no files found. If you have configured a video directory, press &quot;M&quot; (or the MENU key) and select &quot;Scan for Changes.&quot;</translation>
++ <translation>No videos in library, or no files found. If you have configured a video directory, press &quot;M&quot; (or the MENU key) and select &quot;Scan for Changes.&quot;</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="303"/>
+@@ -28564,7 +28843,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="478"/>
+ <source>Post-Processing Options</source>
+- <translation>Post-Processing Options</translation>
++ <translation>Post Processing Options</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="279"/>
+@@ -28851,9 +29130,9 @@
+ <source>On this screen, you can add new extensions to be recognized by the Video Plugin. If a scan does not add your files, create a new extension below by clicking the &quot;New&quot; button.
+
+ If you select &quot;Use Default Player,&quot; the player command set for the extension will be ignored. &quot;Ignore This File Type&quot; prevents the items from appearing in a scan.</source>
+- <translation>On this screen, you can add new extensions to be recognized by the Video Plugin. If a scan does not add your files, create a new extension below by clicking the &quot;New&quot; button.
++ <translation>On this screen, you can add new extensions to be recognized by the Video Plugin. If a scan does not add your files, create a new extension below by clicking the &quot;New&quot; button.
+
+-If you select &quot;Use Default Player,&quot; the player command set for the extension will be ignored. &quot;Ignore This File Type&quot; prevents the items from appearing in a scan.</translation>
++If you select &quot;Use Default Player,&quot; the player command set for the extension will be ignored. &quot;Ignore This File Type&quot; prevents the items from appearing in a scan.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="922"/>
+@@ -29298,7 +29577,7 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="953"/>
+ <source>Move the selected arrow to the corner of the TV screen. Press SELECT to edit the other arrow. Press MENU for options and ESC to quit.</source>
+- <translation>Move the selected arrow to the corner of the TV screen. Press SELECT to edit the other arrow. Press MENU for options and ESC to quit.</translation>
++ <translation>Move the selected arrow to the corner of the TV screen. Press SELECT to edit the other arrow. Press MENU for options and ESC to quit.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="160"/>
+@@ -29674,12 +29953,12 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="907"/>
+ <source>Arclight is a sleek theme meant for widescreen HD displays. It is high contrast and uses shapes and an attractive layout to convey information simply and consistently.</source>
+- <translation>Arclight is a sleek theme meant for widescreen HD displays. It is high contrast and uses shapes and an attractive layout to convey information simply and consistently.</translation>
++ <translation>Arclight is a sleek theme meant for widescreen HD displays. It is high contrast and uses shapes and an attractive layout to convey information simply and consistently.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="971"/>
+ <source>Childish is the first MythTV theme designed specifically with children in mind. It was the winner of MythTV&apos;s v0.23 theming contest.</source>
+- <translation>Childish is the first MythTV theme designed specifically with children in mind. It was the winner of MythTV&apos;s v0.23 theming contest.</translation>
++ <translation>Childish is the first MythTV theme designed specifically with children in mind. It was the winner of MythTV&apos;s v0.23 theming contest.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="20"/>
+@@ -29699,12 +29978,12 @@
+ <message>
+ <location filename="../themes/themestrings.h" line="293"/>
+ <source>A blue theme. Originally designed before the MythUI rewrite, MythCenter has been updated to take advantage of the new UI library while still maintaining the look and feel that long-time MythTV users are used to.</source>
+- <translation>A blue theme. Originally designed before the MythUI rewrite, MythCenter has been updated to take advantage of the new UI library while still maintaining the look and feel that long-time MythTV users are used to.</translation>
++ <translation>A blue theme. Originally designed before the MythUI rewrite, MythCenter has been updated to take advantage of the new UI library while still maintaining the look and feel that long-time MythTV users are used to.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="391"/>
+ <source>This was adapted from the Jeroen Brosens&apos; MythCenter theme. The fonts have been changed to freely redistributable ones and layout changes have been made to make this theme look good on 1280x720 and 1920x1080 screens with a 1:1 pixel aspect ratio.</source>
+- <translation>This was adapted from the Jeroen Brosens&apos; MythCenter theme. The fonts have been changed to freely redistributable ones and layout changes have been made to make this theme look good on 1280x720 and 1920x1080 screens with a 1:1 pixel aspect ratio.</translation>
++ <translation>This was adapted from the Jeroen Brosens&apos; MythCenter theme. The fonts have been changed to freely redistributable ones and layout changes have been made to make this theme look good on 1280x720 and 1920x1080 screens with a 1:1 pixel aspect ratio.</translation>
+ </message>
+ <message>
+ <location filename="../themes/themestrings.h" line="394"/>
+@@ -29954,104 +30233,12 @@
+ <context>
+ <name>ThemeUpdateChecker</name>
+ <message>
+- <location filename="../programs/mythfrontend/themechooser.cpp" line="1150"/>
++ <location filename="../programs/mythfrontend/themechooser.cpp" line="1152"/>
+ <source>Version %1 of the %2 theme is now available in the Theme Chooser. The currently installed version is %3.</source>
+ <translation>Version %1 of the %2 theme is now available in the Theme Chooser. The currently installed version is %3.</translation>
+ </message>
+ </context>
+ <context>
+- <name>ThumbSettings</name>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="14"/>
+- <source>Thumbnails</source>
+- <translation>Thumbnails</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="17"/>
+- <source>Image Order</source>
+- <translation>Image Order</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="18"/>
+- <source>The order that pictures/videos are shown in thumbnail view and ordered slideshows.</source>
+- <translation>The order that pictures/videos are shown in thumbnail view and ordered slideshows.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="20"/>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="36"/>
+- <source>Filename (A-Z)</source>
+- <translation>Filename (A-Z)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="21"/>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="37"/>
+- <source>Reverse Filename (Z-A)</source>
+- <translation>Reverse Filename (Z-A)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="22"/>
+- <source>Exif Date (oldest first)</source>
+- <translation>Exif Date (oldest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="23"/>
+- <source>Reverse Exif Date (newest first)</source>
+- <translation>Reverse Exif Date (newest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="24"/>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="38"/>
+- <source>File Modified Time (oldest first)</source>
+- <translation>File Modified Time (oldest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="25"/>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="39"/>
+- <source>Reverse File Modified Time (newest first)</source>
+- <translation>Reverse File Modified Time (newest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="26"/>
+- <source>File Extension (A-Z)</source>
+- <translation>File Extension (A-Z)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="27"/>
+- <source>Reverse File Extension (Z-A)</source>
+- <translation>Reverse File Extension (Z-A)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="28"/>
+- <source>File Size (smallest first)</source>
+- <translation>File Size (smallest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="29"/>
+- <source>Reverse File Size (largest first)</source>
+- <translation>Reverse File Size (largest first)</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="33"/>
+- <source>Directory Order</source>
+- <translation>Directory Order</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="34"/>
+- <source>The order that dirctories are shown and traversed in recursive slideshows.</source>
+- <translation>The order that dirctories are shown and traversed in recursive slideshows.</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="43"/>
+- <source>Date Format</source>
+- <translation>Date Format</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/galleryconfig.cpp" line="60"/>
+- <source>Date format of thumbnail captions. Other places use the system date format. Sample shows 3rd May 2002.</source>
+- <translation>Date format of thumbnail captions. Other places use the system date format. Sample shows 3rd May 2002.</translation>
+- </message>
+-</context>
+-<context>
+ <name>Transition</name>
+ <message>
+ <location filename="../programs/mythfrontend/gallerytransitions.h" line="103"/>
+@@ -30085,47 +30272,29 @@
+ </message>
+ </context>
+ <context>
+- <name>TransportList</name>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="89"/>
+- <source>New Transport</source>
+- <translation>New Transport</translation>
+- </message>
+-</context>
+-<context>
+ <name>TransportListEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="279"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="188"/>
+ <source>Multiplex Editor</source>
+ <translation>Multiplex Editor</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="324"/>
+- <source>Are you sure you would like to delete this transport?</source>
+- <translation>Are you sure you would like to delete this transport?</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="325"/>
+- <source>Yes, delete the transport</source>
+- <translation>Yes, delete the transport</translation>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="192"/>
++ <source>New Transport</source>
++ <translation>New Transport</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="326"/>
+- <source>No, don&apos;t</source>
+- <translation>No, don&apos;t</translation>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="304"/>
++ <source>Are you sure you would like to delete this transport?</source>
++ <translation>Are you sure you would like to delete this transport?</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="360"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="346"/>
+ <source>Transport Menu</source>
+ <translation>Transport Menu</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="361"/>
+- <source>Edit...</source>
+- <translation>Edit...</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/transporteditor.cpp" line="362"/>
++ <location filename="../libs/libmythtv/transporteditor.cpp" line="347"/>
+ <source>Delete...</source>
+ <translation>Delete...</translation>
+ </message>
+@@ -30133,8 +30302,8 @@
+ <context>
+ <name>UPNPScanner</name>
+ <message>
+- <location filename="../programs/mythfrontend/upnpscanner.cpp" line="226"/>
+- <location filename="../programs/mythfrontend/upnpscanner.cpp" line="273"/>
++ <location filename="../programs/mythfrontend/upnpscanner.cpp" line="225"/>
++ <location filename="../programs/mythfrontend/upnpscanner.cpp" line="271"/>
+ <source>Media Servers</source>
+ <translation>Media Servers</translation>
+ </message>
+@@ -30142,87 +30311,87 @@
+ <context>
+ <name>UnZip</name>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="245"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="286"/>
+ <source>ZIP operation completed successfully.</source>
+ <translation>ZIP operation completed successfully.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="246"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="287"/>
+ <source>Failed to initialize or load zlib library.</source>
+ <translation>Failed to initialize or load zlib library.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="247"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="288"/>
+ <source>zlib library error.</source>
+ <translation>zlib library error.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="248"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="289"/>
+ <source>Unable to create or open file.</source>
+ <translation>Unable to create or open file.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="249"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="290"/>
+ <source>Partially corrupted archive. Some files might be extracted.</source>
+ <translation>Partially corrupted archive. Some files might be extracted.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="250"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="291"/>
+ <source>Corrupted archive.</source>
+ <translation>Corrupted archive.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="251"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="292"/>
+ <source>Wrong password.</source>
+ <translation>Wrong password.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="252"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="293"/>
+ <source>No archive has been created yet.</source>
+ <translation>No archive has been created yet.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="253"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="294"/>
+ <source>File or directory does not exist.</source>
+ <translation>File or directory does not exist.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="254"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="295"/>
+ <source>File read error.</source>
+ <translation>File read error.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="255"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="296"/>
+ <source>File write error.</source>
+ <translation>File write error.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="256"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="297"/>
+ <source>File seek error.</source>
+ <translation>File seek error.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="257"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="298"/>
+ <source>Unable to create a directory.</source>
+ <translation>Unable to create a directory.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="258"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="299"/>
+ <source>Invalid device.</source>
+ <translation>Invalid device.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="259"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="300"/>
+ <source>Invalid or incompatible zip archive.</source>
+ <translation>Invalid or incompatible zip archive.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="260"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="301"/>
+ <source>Inconsistent headers. Archive might be corrupted.</source>
+ <translation>Inconsistent headers. Archive might be corrupted.</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythbase/unzip.cpp" line="264"/>
++ <location filename="../libs/libmythbase/unzip.cpp" line="305"/>
+ <source>Unknown error.</source>
+ <translation>Unknown error.</translation>
+ </message>
+@@ -30230,89 +30399,89 @@
+ <context>
+ <name>V4L2encGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2705"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2412"/>
+ <source>Probed info</source>
+- <translation>Probed info</translation>
++ <translation>Probed Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2729"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2426"/>
+ <source>Failed to open</source>
+- <translation>Failed to open</translation>
++ <translation>Failed to Open</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2735"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2432"/>
+ <source>Failed to probe</source>
+- <translation>Failed to probe</translation>
++ <translation>Failed to Probe</translation>
+ </message>
+ </context>
+ <context>
+ <name>V4LConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2470"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2172"/>
+ <source>Probed info</source>
+- <translation>Probed info</translation>
++ <translation>Probed Info</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2485"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2190"/>
+ <source>Failed to open</source>
+- <translation>Failed to open</translation>
++ <translation>Failed to Open</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2492"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="2197"/>
+ <source>Failed to probe</source>
+- <translation>Failed to probe</translation>
++ <translation>Failed to Probe</translation>
+ </message>
+ </context>
+ <context>
+ <name>VBoxChannelFetcher</name>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="128"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="132"/>
+ <source>Downloading Channel List</source>
+ <translation>Downloading Channel List</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="144"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="148"/>
+ <source>Downloading Channel List Failed</source>
+ <translation>Downloading Channel List Failed</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="156"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="160"/>
+ <source>Adding Channels</source>
+ <translation>Adding Channels</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="177"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="183"/>
+ <source>Channel #%1 : %2</source>
+ <extracomment>%1 is the channel number, %2 is the channel name</extracomment>
+ <translation>Channel #%1 : %2</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="187"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="193"/>
+ <source>Ignoring Encrypted %1</source>
+ <translation>Ignoring Encrypted %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="195"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="202"/>
+ <source>Ignoring Radio %1</source>
+ <translation>Ignoring Radio %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="203"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="211"/>
+ <source>Ignoring Bad Transmission Type %1</source>
+ <translation>Ignoring Bad Transmission Type %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="213"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="222"/>
+ <source>Adding %1</source>
+ <translation>Adding %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="227"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="244"/>
+ <source>Updating %1</source>
+ <translation>Updating %1</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="242"/>
++ <location filename="../libs/libmythtv/channelscan/vboxchannelfetcher.cpp" line="267"/>
+ <source>Done</source>
+ <translation>Done</translation>
+ </message>
+@@ -30320,35 +30489,30 @@
+ <context>
+ <name>VBoxConfigurationGroup</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2267"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1990"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="2282"/>
+- <source>Recording Options</source>
+- <translation>Recording Options</translation>
+- </message>
+ </context>
+ <context>
+ <name>VBoxDeviceID</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1663"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1619"/>
+ <source>Device ID</source>
+ <translation>Device ID</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1664"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1620"/>
+ <source>Device ID of VBox device</source>
+- <translation>Device ID of VBox device</translation>
++ <translation>Device ID of VBox Device</translation>
+ </message>
+ </context>
+ <context>
+ <name>VBoxDeviceIDList</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1735"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1779"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="1786"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1694"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1740"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="1747"/>
+ <source>Manually Enter IP Address</source>
+ <translation>Manually Enter IP Address</translation>
+ </message>
+@@ -30356,23 +30520,23 @@
+ <context>
+ <name>VideoDialog</name>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="1265"/>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="1280"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="1268"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="1283"/>
+ <source>Season</source>
+ <translation>Season</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2287"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2288"/>
+ <source>Video Search</source>
+ <translation>Video Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2348"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2349"/>
+ <source>%1 of %2</source>
+ <translation>%1 of %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2432"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2433"/>
+ <source>Video Options
+ %1
+ %2</source>
+@@ -30381,350 +30545,350 @@
+ %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2435"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2436"/>
+ <source>Video Options
+ %1</source>
+ <translation>Video Options
+ %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2438"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2439"/>
+ <source>Video Options</source>
+ <translation>Video Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2449"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2450"/>
+ <source>Play...</source>
+ <translation>Play...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2451"/>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2494"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2452"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2498"/>
+ <source>Play</source>
+ <translation>Play</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2453"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2454"/>
+ <source>Mark as Unwatched</source>
+ <translation>Mark as Unwatched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2455"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2456"/>
+ <source>Mark as Watched</source>
+ <translation>Mark as Watched</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2456"/>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2685"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2457"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2706"/>
+ <source>Video Info</source>
+ <translation>Video Info</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2459"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2460"/>
+ <source>Change Video Details</source>
+ <translation>Change Video Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2461"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2462"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2465"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2466"/>
+ <source>Play Folder</source>
+ <translation>Play Folder</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2488"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2492"/>
+ <source>Playback Options
+ %1</source>
+ <translation>Playback Options
+ %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2498"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2502"/>
+ <source>Play in Alternate Player</source>
+ <translation>Play in Alternate Player</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2503"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2507"/>
+ <source>Play With Trailers</source>
+- <translation>Play With Trailers</translation>
++ <translation>Play with Trailers</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2510"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2514"/>
+ <source>Play Trailer</source>
+ <translation>Play Trailer</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2522"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2526"/>
+ <source>Video Display Menu</source>
+ <translation>Video Display Menu</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2526"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2530"/>
+ <source>Scan For Changes</source>
+- <translation>Scan For Changes</translation>
++ <translation>Scan for Changes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2527"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2531"/>
+ <source>Retrieve All Details</source>
+ <translation>Retrieve All Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2528"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2532"/>
+ <source>Filter Display</source>
+ <translation>Filter Display</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2529"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2533"/>
+ <source>Browse By...</source>
+ <translation>Browse By...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2530"/>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2547"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2534"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2568"/>
+ <source>Change View</source>
+ <translation>Change View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3374"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3395"/>
+ <source>Failed to retrieve image(s)</source>
+- <translation>Failed to retrieve image(s)</translation>
++ <translation>Failed to Retrieve Image(s)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3376"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3397"/>
+ <source>Check logs</source>
+- <translation>Check logs</translation>
++ <translation>Check Logs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3836"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3855"/>
+ <source>There are no videos in the database, would you like to scan your video directories now?</source>
+ <translation>There are no videos in the database, would you like to scan your video directories now?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2531"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2535"/>
+ <source>Settings</source>
+ <translation>Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="1113"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="1116"/>
+ <source>The video scan found no files, have you configured a video storage group?</source>
+ <translation>The video scan found no files, have you configured a video storage group?</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2157"/>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2186"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2158"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2187"/>
+ <source>Season %1, Episode %2</source>
+ <translation>Season %1, Episode %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2177"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2178"/>
+ <source>Retrieved details for %1</source>
+- <translation>Retrieved details for %1</translation>
++ <translation>Retrieved Details for %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2181"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2182"/>
+ <source>Failed to retrieve details for %1</source>
+- <translation>Failed to retrieve details for %1</translation>
++ <translation>Failed to Retrieve Details for %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2552"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2573"/>
+ <source>Switch to Browse View</source>
+ <translation>Switch to Browse View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2555"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2576"/>
+ <source>Switch to Gallery View</source>
+ <translation>Switch to Gallery View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2558"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2579"/>
+ <source>Switch to List View</source>
+ <translation>Switch to List View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2561"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2582"/>
+ <source>Switch to Manage View</source>
+ <translation>Switch to Manage View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2564"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2585"/>
+ <source>Show Directory Structure</source>
+ <translation>Show Directory Structure</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2566"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2587"/>
+ <source>Hide Directory Structure</source>
+ <translation>Hide Directory Structure</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2569"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2590"/>
+ <source>Browse Library (recommended)</source>
+ <translation>Browse Library (recommended)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2571"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2592"/>
+ <source>Browse Filesystem (slow)</source>
+ <translation>Browse Filesystem (slow)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2583"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2604"/>
+ <source>Video Settings</source>
+ <translation>Video Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2587"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2608"/>
+ <source>Player Settings</source>
+ <translation>Player Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2588"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2609"/>
+ <source>Metadata Settings</source>
+ <translation>Metadata Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2589"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2610"/>
+ <source>File Type Settings</source>
+ <translation>File Type Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2642"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2663"/>
+ <source>Browse By</source>
+ <translation>Browse By</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2647"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2668"/>
+ <source>Cast</source>
+ <translation>Cast</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2650"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2671"/>
+ <source>Category</source>
+ <translation>Category</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2653"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2674"/>
+ <source>Date Added</source>
+ <translation>Date Added</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2656"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2677"/>
+ <source>Director</source>
+ <translation>Director</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2659"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2680"/>
+ <source>Studio</source>
+ <translation>Studio</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2662"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2683"/>
+ <source>Folder</source>
+ <translation>Folder</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2665"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2686"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2668"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2689"/>
+ <source>TV/Movies</source>
+ <translation>TV/Movies</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2671"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2692"/>
+ <source>User Rating</source>
+ <translation>User Rating</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2674"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2695"/>
+ <source>Year</source>
+ <translation>Year</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2690"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2711"/>
+ <source>View Details</source>
+ <translation>View Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2692"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2713"/>
+ <source>View Full Plot</source>
+ <translation>View Full Plot</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2698"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2719"/>
+ <source>View Cast</source>
+ <translation>View Cast</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2700"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2721"/>
+ <source>View Homepage</source>
+ <translation>View Homepage</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2712"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2733"/>
+ <source>Manage Video Details</source>
+ <translation>Manage Video Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2718"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2739"/>
+ <source>Edit Details</source>
+ <translation>Edit Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2719"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2740"/>
+ <source>Retrieve Details</source>
+ <translation>Retrieve Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2721"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2742"/>
+ <source>Allow Updates</source>
+ <translation>Allow Updates</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2723"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2744"/>
+ <source>Disable Updates</source>
+ <translation>Disable Updates</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2724"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2745"/>
+ <source>Reset Details</source>
+ <translation>Reset Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2976"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2997"/>
+ <source>An error occurred when switching views.</source>
+ <translation>An error occurred when switching views.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3049"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3070"/>
+ <source>No browser command set! MythVideo needs MythBrowser installed to display the homepage.</source>
+ <translation>No browser command set! MythVideo needs MythBrowser installed to display the homepage.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="2152"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="2153"/>
+ <source>Fetching details for %1</source>
+- <translation>Fetching details for %1</translation>
++ <translation>Fetching Details for %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3557"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3576"/>
+ <source>Are you sure you want to permanently delete:
+ %1</source>
+- <translation>Are you sure you want to permanently delete:
++ <translation>Are you sure you want to delete:
+ %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videodlg.cpp" line="3595"/>
++ <location filename="../programs/mythfrontend/videodlg.cpp" line="3614"/>
+ <source>Failed to delete file</source>
+- <translation>Failed to delete file</translation>
++ <translation>Failed to delete file.</translation>
+ </message>
+ </context>
+ <context>
+ <name>VideoFilterDialog</name>
+ <message numerus="yes">
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="639"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="608"/>
+ <source>Result of this filter : %n video(s)</source>
+ <translation>
+ <numerusform>Result of this filter : %n video</numerusform>
+@@ -30732,101 +30896,101 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="644"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="613"/>
+ <source>Result of this filter : No Videos</source>
+ <translation>Result of this filter : No Videos</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="679"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="648"/>
+ <source>All</source>
+ <comment>Category</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="695"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="664"/>
+ <source>All</source>
+ <comment>Genre</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="708"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="677"/>
+ <source>All</source>
+ <comment>Cast</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="721"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="690"/>
+ <source>All</source>
+ <comment>Country</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="735"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="704"/>
+ <source>All</source>
+ <comment>Year</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="750"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="719"/>
+ <source>All</source>
+ <comment>Runtime</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="759"/>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="760"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="728"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="729"/>
+ <source>minutes</source>
+ <translation>minutes</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="767"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="736"/>
+ <source>All</source>
+ <comment>User rating</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="781"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="750"/>
+ <source>All</source>
+ <comment>Browsable</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="790"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="759"/>
+ <source>All</source>
+ <comment>Watched</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="799"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="768"/>
+ <source>All</source>
+ <comment>Inet reference</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="801"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="770"/>
+ <source>Unknown</source>
+ <comment>Inet reference</comment>
+ <translation>Unknown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="806"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="775"/>
+ <source>All</source>
+ <comment>Cover file</comment>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="808"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="777"/>
+ <source>None</source>
+ <comment>Cover file</comment>
+ <translation>None</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="831"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="800"/>
+ <source>Video ID</source>
+ <translation>Video ID</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videofilter.cpp" line="833"/>
++ <location filename="../programs/mythfrontend/videofilter.cpp" line="802"/>
+ <source>Date Added</source>
+ <translation>Date Added</translation>
+ </message>
+@@ -30901,7 +31065,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="106"/>
+ <source>Directories that hold videos</source>
+- <translation>Directories that hold videos</translation>
++ <translation>Directories That Hold Videos</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="110"/>
+@@ -30911,7 +31075,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="122"/>
+ <source>Directory that holds movie posters</source>
+- <translation>Directory that holds movie posters</translation>
++ <translation>Directory That Holds Movie Posters</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="127"/>
+@@ -30925,37 +31089,37 @@
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="138"/>
+ <source>Directory that holds movie screenshots</source>
+- <translation>Directory that holds movie screenshots</translation>
++ <translation>Directory That Holds Movie Screenshots</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="154"/>
+ <source>Directory that holds movie/TV Banners</source>
+- <translation>Directory that holds movie/TV Banners</translation>
++ <translation>Directory That Holds Movie/TV Banners</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="170"/>
+ <source>Directory that holds movie fanart</source>
+- <translation>Directory that holds movie fanart</translation>
++ <translation>Directory That Holds Movie Fanart</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="185"/>
+ <source>Directory that holds movie trailers</source>
+- <translation>Directory that holds movie trailers</translation>
++ <translation>Directory That Holds Movie Trailers</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="207"/>
+ <source>On DVD insertion</source>
+- <translation>On DVD insertion</translation>
++ <translation>On DVD Insertion</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="209"/>
+ <source>Display mythdvd menu</source>
+- <translation>Display MythDVD menu</translation>
++ <translation>Display MythDVD Menu</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="210"/>
+ <source>Do nothing</source>
+- <translation>Do nothing</translation>
++ <translation>Do Nothing</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="211"/>
+@@ -30970,7 +31134,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="224"/>
+ <source>Video Tree remembers last selected position</source>
+- <translation>Video Tree remembers last selected position</translation>
++ <translation>Video Tree Remembers Last Selected Position</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="229"/>
+@@ -30978,197 +31142,187 @@
+ <translation>If set, the current position in the Video Tree is persistent.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="284"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="239"/>
+ <source>Enable automatic Parental Level from rating</source>
+- <translation>Enable automatic Parental Level from rating</translation>
++ <translation>Enable Automatic Parental Level from Rating</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="288"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="243"/>
+ <source>If enabled, searches will automatically set the Parental Level to the one matching the rating below.</source>
+ <translation>If enabled, searches will automatically set the Parental Level to the one matching the rating below.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="301"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="254"/>
+ <source>G</source>
+ <comment>PL 1 default search string.</comment>
+ <translation>G</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="303"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="256"/>
+ <source>PG</source>
+ <comment>PL 2 default search string.</comment>
+ <translation>PG</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="305"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="258"/>
+ <source>PG-13</source>
+ <comment>PL3 default search string.</comment>
+ <translation>PG-13</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="308"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="261"/>
+ <source>R:NC-17</source>
+ <comment>PL4 default search string.</comment>
+ <translation>R:NC-17</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="319"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="270"/>
+ <source>Level %1</source>
+ <translation>Level %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="322"/>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="273"/>
+ <source>Ratings containing these strings (separated by :) will be assigned to Parental Level %1.</source>
+ <translation>Ratings containing these strings (separated by :) will be assigned to Parental Level %1.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="366"/>
+- <source>Parental Control Settings</source>
+- <translation>Parental Control Settings</translation>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="299"/>
++ <source>General Settings</source>
++ <translation>General Settings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="382"/>
+- <source>General Settings (%1/%2)</source>
+- <translation>General Settings (%1/%2)</translation>
++ <location filename="../programs/mythfrontend/videoglobalsettings.cpp" line="312"/>
++ <source>Parental Control Settings</source>
++ <translation>Parental Control Settings</translation>
+ </message>
+ </context>
+ <context>
+ <name>VideoMetadata</name>
+ <message>
+- <location filename="../libs/libmythmetadata/videometadata.cpp" line="1100"/>
++ <location filename="../libs/libmythmetadata/videometadata.cpp" line="1085"/>
+ <source>Season</source>
+ <comment>Metadata file name parsing</comment>
+ <extracomment>Word(s) which should be recognized as &quot;season&quot; when parsing a video * file name. To list more than one word, separate them with a &apos;|&apos;.</extracomment>
+ <translation>Season</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythmetadata/videometadata.cpp" line="1105"/>
++ <location filename="../libs/libmythmetadata/videometadata.cpp" line="1090"/>
+ <source>Episode</source>
+ <comment>Metadata file name parsing</comment>
+ <extracomment>Word(s) which should be recognized as &quot;episode&quot; when parsing a video * file name. To list more than one word, separate them with a &apos;|&apos;.</extracomment>
+ <translation>Episode</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythmetadata/videometadata.cpp" line="1179"/>
+- <source>^(The |A |An )</source>
+- <translation>^(The |A |An )</translation>
+- </message>
+ </context>
+ <context>
+ <name>VideoModeSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2184"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2200"/>
+ <source>Separate video modes for GUI and TV playback</source>
+- <translation>Separate video modes for GUI and TV playback</translation>
++ <translation>Separate Video Modes for GUI and TV Playback</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2189"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2205"/>
+ <source>Switch X Window video modes for TV. Requires &quot;xrandr&quot; support.</source>
+ <translation>Switch X Window video modes for TV. Requires &quot;xrandr&quot; support.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2199"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2216"/>
+ <source>In X</source>
+ <comment>Video mode width</comment>
+ <translation>In X</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2206"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2220"/>
+ <source>Horizontal resolution of video which needs a special output resolution.</source>
+ <translation>Horizontal resolution of video which needs a special output resolution.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2217"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2232"/>
+ <source>In Y</source>
+ <comment>Video mode height</comment>
+ <translation>In Y</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2224"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2236"/>
+ <source>Vertical resolution of video which needs a special output resolution.</source>
+ <translation>Vertical resolution of video which needs a special output resolution.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2234"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2246"/>
+ <source>GUI</source>
+ <translation>GUI</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2238"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2248"/>
+ <source>Resolution of screen when not watching a video.</source>
+ <translation>Resolution of screen when not watching a video.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2268"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2278"/>
+ <source>Default screen resolution when watching a video.</source>
+ <translation>Default screen resolution when watching a video.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2270"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2280"/>
+ <source>Screen resolution when watching a video at a specific resolution.</source>
+ <translation>Screen resolution when watching a video at a specific resolution.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2276"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2286"/>
+ <source>Video output</source>
+- <translation>Video output</translation>
++ <translation>Video Output</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2277"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2287"/>
+ <source>Output</source>
+ <translation>Output</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2298"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2361"/>
+ <source>Default refresh rate when watching a video. Leave at &quot;Auto&quot; to automatically use the best available</source>
+ <translation>Default refresh rate when watching a video. Leave at &quot;Auto&quot; to automatically use the best available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2302"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2365"/>
+ <source>Refresh rate when watching a video at a specific resolution. Leave at &quot;Auto&quot; to automatically use the best available</source>
+ <translation>Refresh rate when watching a video at a specific resolution. Leave at &quot;Auto&quot; to automatically use the best available</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2310"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2374"/>
+ <source>Rate</source>
+ <translation>Rate</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2322"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2385"/>
+ <source>Aspect ratio when watching a video. Leave at &quot;%1&quot; to use ratio reported by the monitor. Set to 16:9 or 4:3 to force a specific aspect ratio.</source>
+ <translation>Aspect ratio when watching a video. Leave at &quot;%1&quot; to use ratio reported by the monitor. Set to 16:9 or 4:3 to force a specific aspect ratio.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2330"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2393"/>
+ <source>Aspect ratio when watching a video at a specific resolution. Leave at &quot;%1&quot; to use ratio reported by the monitor. Set to 16:9 or 4:3 to force a specific aspect ratio.</source>
+ <translation>Aspect ratio when watching a video at a specific resolution. Leave at &quot;%1&quot; to use ratio reported by the monitor. Set to 16:9 or 4:3 to force a specific aspect ratio.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2342"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2405"/>
+ <source>Aspect</source>
+ <translation>Aspect</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2348"/>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2350"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2409"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2411"/>
+ <source>Default</source>
+ <translation>Default</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2360"/>
+- <source>Video Mode Settings</source>
+- <translation>Video Mode Settings</translation>
+- </message>
+- <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="2383"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="2438"/>
+ <source>Overrides for specific video sizes</source>
+- <translation>Overrides for specific video sizes</translation>
++ <translation>Overrides for Specific Video Sizes</translation>
+ </message>
+ </context>
+ <context>
+ <name>VideoOutWindow</name>
+ <message>
+- <location filename="../libs/libmythtv/videooutwindow.cpp" line="960"/>
++ <location filename="../libs/libmythtv/videooutwindow.cpp" line="1001"/>
+ <source>Zoom %1x%2 @ (%3,%4)</source>
+ <translation>Zoom %1x%2 @ (%3,%4)</translation>
+ </message>
+@@ -31176,7 +31330,7 @@
+ <context>
+ <name>VideoScanner</name>
+ <message>
+- <location filename="../libs/libmythmetadata/videoscan.cpp" line="484"/>
++ <location filename="../libs/libmythmetadata/videoscan.cpp" line="482"/>
+ <source>Failed to Scan SG Video Hosts:
+
+ %1
+@@ -31194,80 +31348,80 @@
+ <message>
+ <location filename="../libs/libmythmetadata/videoscan.cpp" line="181"/>
+ <source>Searching for video files</source>
+- <translation>Searching for video files</translation>
++ <translation>Searching for Video Files...</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythmetadata/videoscan.cpp" line="258"/>
+ <source>Verifying video files</source>
+- <translation>Verifying video files</translation>
++ <translation>Verifying Video Files...</translation>
+ </message>
+ <message>
+ <location filename="../libs/libmythmetadata/videoscan.cpp" line="314"/>
+ <source>Updating video database</source>
+- <translation>Updating video database</translation>
++ <translation>Updating Video Database...</translation>
+ </message>
+ </context>
+ <context>
+ <name>VideoSetupWizard</name>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="70"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="67"/>
+ <source>Select from one of the preconfigured playback profiles. When satisfied, you can test Standard Definition and High Definition playback with the selected profile before moving on.</source>
+- <translation>Select from one of the preconfigured playback profiles. When satisfied, you can test Standard Definition and High Definition playback with the selected profile before moving on.</translation>
++ <translation>Select from one of the preconfigured playback profiles. When satisfied, you can test Standard Definition and High Definition playback with the selected profile before moving on.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="75"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="72"/>
+ <source>Test your playback settings with Standard Definition content. (480p)</source>
+- <translation>Test your playback settings with Standard Definition content. (480p)</translation>
++ <translation>Test your playback settings with Standard Definition (480p) content.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="77"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="74"/>
+ <source>Test your playback settings with High Definition content (1080p).</source>
+- <translation>Test your playback settings with High Definition content (1080p).</translation>
++ <translation>Test your playback settings with High Definition (1080p) content.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="79"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="76"/>
+ <source>Save these changes and move on to the next configuration step.</source>
+ <translation>Save these changes and move on to the next configuration step.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="81"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="78"/>
+ <source>Return to the previous configuration step.</source>
+ <translation>Return to the previous configuration step.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="174"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="171"/>
+ <source>A short test of your system&apos;s playback of Standard Definition content with the %1 profile.</source>
+ <translation>A short test of your system&apos;s playback of Standard Definition content with the %1 profile.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="177"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="174"/>
+ <source>Standard Definition Playback Test</source>
+ <translation>Standard Definition Playback Test</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="195"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="192"/>
+ <source>A short test of your system&apos;s playback of High Definition content with the %1 profile.</source>
+ <translation>A short test of your system&apos;s playback of High Definition content with the %1 profile.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="198"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="195"/>
+ <source>High Definition Playback Test</source>
+ <translation>High Definition Playback Test</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="228"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="225"/>
+ <source>Downloading Video Sample...</source>
+ <translation>Downloading Video Sample...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="262"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="259"/>
+ <source>Downloading Video Sample...
+ (%1 of %2 MB)</source>
+ <translation>Downloading Video Sample...
+ (%1 of %2 MB)</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="291"/>
++ <location filename="../programs/mythfrontend/setupwizard_video.cpp" line="288"/>
+ <source>Error downloading sample to backend.</source>
+ <translation>Error downloading sample to backend.</translation>
+ </message>
+@@ -31275,56 +31429,25 @@
+ <context>
+ <name>VideoSourceEditor</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3887"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3574"/>
+ <source>Video sources</source>
+- <translation>Video sources</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3929"/>
+- <source>Video Source Menu</source>
+- <translation>Video Source Menu</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3930"/>
+- <source>Edit...</source>
+- <translation>Edit...</translation>
++ <translation>Video Sources</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3931"/>
+- <source>Delete...</source>
+- <translation>Delete...</translation>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3617"/>
++ <source>New video source</source>
++ <translation>New Video Source</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3948"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="3597"/>
+ <source>Are you sure you want to delete ALL video sources?</source>
+ <translation>Are you sure you want to delete ALL video sources?</translation>
+ </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3950"/>
+- <source>Yes, delete video sources</source>
+- <translation>Yes, delete video sources</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3951"/>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3975"/>
+- <source>No, don&apos;t</source>
+- <translation>No, don&apos;t</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3972"/>
+- <source>Are you sure you want to delete this video source?</source>
+- <translation>Are you sure you want to delete this video source?</translation>
+- </message>
+- <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="3974"/>
+- <source>Yes, delete video source</source>
+- <translation>Yes, delete video source</translation>
+- </message>
+ </context>
+ <context>
+ <name>VideoSourceSelector</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="71"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="79"/>
+ <source>Video Source</source>
+ <translation>Video Source</translation>
+ </message>
+@@ -31332,109 +31455,109 @@
+ <context>
+ <name>ViewScheduled</name>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="100"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="98"/>
+ <source>Scheduled Recordings</source>
+ <translation>Scheduled Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="110"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="108"/>
+ <source>Group List</source>
+ <translation>Group List</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="215"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="212"/>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="226"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="644"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="223"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="642"/>
+ <source>Show Important</source>
+ <translation>Show Important</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="228"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="648"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="225"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="646"/>
+ <source>Show All</source>
+ <translation>Show All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="229"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="652"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="226"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="650"/>
+ <source>Program Details</source>
+ <translation>Program Details</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="230"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="656"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="227"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="654"/>
+ <source>Program Guide</source>
+ <translation>Program Guide</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="231"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="660"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="228"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="658"/>
+ <source>Channel Search</source>
+ <translation>Channel Search</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="232"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="664"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="229"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="662"/>
+ <source>Upcoming by title</source>
+- <translation>Upcoming by title</translation>
++ <translation>Upcoming by Title</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="233"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="668"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="230"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="666"/>
+ <source>Upcoming scheduled</source>
+- <translation>Upcoming scheduled</translation>
++ <translation>Upcoming Scheduled</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="234"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="672"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="231"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="670"/>
+ <source>Previously Recorded</source>
+ <translation>Previously Recorded</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="235"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="676"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="232"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="674"/>
+ <source>Custom Edit</source>
+ <translation>Custom Edit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="236"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="680"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="233"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="678"/>
+ <source>Delete Rule</source>
+ <translation>Delete Rule</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="237"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="684"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="234"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="682"/>
+ <source>Show Inputs</source>
+ <translation>Show Inputs</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="334"/>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="507"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="331"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="505"/>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="493"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="491"/>
+ <source>Conflict %1</source>
+ <translation>Conflict %1</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="500"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="498"/>
+ <source>No Conflicts</source>
+ <translation>No Conflicts</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="509"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="507"/>
+ <source>Important</source>
+ <translation>Important</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/viewscheduled.cpp" line="553"/>
++ <location filename="../programs/mythfrontend/viewscheduled.cpp" line="551"/>
+ <source>Delete &apos;%1&apos; %2 rule?</source>
+ <translation>Delete &apos;%1&apos; %2 rule?</translation>
+ </message>
+@@ -31442,52 +31565,52 @@
+ <context>
+ <name>WatchListSettings</name>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3232"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3400"/>
+ <source>Include the &apos;Watch List&apos; group</source>
+- <translation>Include the &apos;Watch List&apos; group</translation>
++ <translation>Include the &apos;Watch List&apos; Group</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3236"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3404"/>
+ <source>The &apos;Watch List&apos; is an abbreviated list of recordings sorted to highlight series and shows that need attention in order to keep up to date.</source>
+ <translation>The &apos;Watch List&apos; is an abbreviated list of recordings sorted to highlight series and shows that need attention in order to keep up to date.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3248"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3416"/>
+ <source>Start from the Watch List view</source>
+- <translation>Start from the Watch List view</translation>
++ <translation>Start from the Watch List View</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3252"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3420"/>
+ <source>If enabled, the &apos;Watch List&apos; will be the initial view each time you enter the Watch Recordings screen</source>
+- <translation>If enabled, the &apos;Watch List&apos; will be the initial view each time you enter the Watch Recordings screen</translation>
++ <translation>If Enabled, the &apos;Watch List&apos; Will Be the Initial View Each Time You Enter the Watch Recordings Screen</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3262"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3430"/>
+ <source>Exclude recordings not set for Auto-Expire</source>
+- <translation>Exclude recordings not set for Auto-Expire</translation>
++ <translation>Exclude Recordings Not Set for Auto-expire</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3267"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3435"/>
+ <source>Set this if you turn off Auto-Expire only for recordings that you&apos;ve seen and intend to keep. This option will exclude these recordings from the &apos;Watch List&apos;.</source>
+- <translation>Set this if you turn off Auto-Expire only for recordings that you&apos;ve seen and intend to keep. This option will exclude these recordings from the &apos;Watch List&apos;.</translation>
++ <translation>Set this if you turn off Auto-expire only for recordings that you&apos;ve seen and intend to keep. This option will exclude these recordings from the &apos;Watch List&apos;.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3280"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3448"/>
+ <source>Maximum days counted in the score</source>
+- <translation>Maximum days counted in the score</translation>
++ <translation>Maximum Days Counted in the Score</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3284"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3452"/>
+ <source>The &apos;Watch List&apos; scores are based on 1 point equals one day since recording. This option limits the maximum score due to age and affects other weighting factors.</source>
+ <translation>The &apos;Watch List&apos; scores are based on 1 point equals one day since recording. This option limits the maximum score due to age and affects other weighting factors.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3296"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3464"/>
+ <source>Days to exclude weekly episodes after delete</source>
+ <translation>Days to exclude weekly episodes after delete</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3301"/>
++ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3469"/>
+ <source>When an episode is deleted or marked as watched, other episodes of the series are excluded from the &apos;Watch List&apos; for this interval of time. Daily shows also have a smaller interval based on this setting.</source>
+ <translation>When an episode is deleted or marked as watched, other episodes of the series are excluded from the &apos;Watch List&apos; for this interval of time. Daily shows also have a smaller interval based on this setting.</translation>
+ </message>
+@@ -31495,89 +31618,89 @@
+ <context>
+ <name>WelcomeDialog</name>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="91"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="84"/>
+ <source>Start Frontend</source>
+ <translation>Start Frontend</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="342"/>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="343"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="334"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="335"/>
+ <source>Cannot connect to server!</source>
+ <translation>Cannot connect to server!</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="363"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="355"/>
+ <source>Tuner %1 is recording:</source>
+- <translation>Tuner %1 is recording:</translation>
++ <translation>Tuner %1 is Recording:</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="371"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="363"/>
+ <source>%1 to %2</source>
+ <comment>Time period, &apos;starttime to endtime&apos;</comment>
+ <translation>%1 to %2</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="376"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="368"/>
+ <source>There are no recordings currently taking place</source>
+- <translation>There are no recordings currently taking place</translation>
++ <translation>There Are No Recordings Currently Taking Place</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="408"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="398"/>
+ <source>There are no scheduled recordings</source>
+- <translation>There are no scheduled recordings</translation>
++ <translation>There Are No Scheduled Recordings</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="415"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="405"/>
+ <source>Please Wait...</source>
+ <translation>Please Wait...</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="521"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="511"/>
+ <source>MythTV is about to start recording.</source>
+ <translation>MythTV is about to start recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="526"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="516"/>
+ <source>MythTV is busy recording.</source>
+ <translation>MythTV is busy recording.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="535"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="525"/>
+ <source>MythTV is busy transcoding.</source>
+ <translation>MythTV is busy transcoding.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="537"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="527"/>
+ <source>MythTV is busy flagging commercials.</source>
+ <translation>MythTV is busy flagging commercials.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="539"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="529"/>
+ <source>MythTV is busy grabbing EPG data.</source>
+ <translation>MythTV is busy grabbing EPG data.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="541"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="531"/>
+ <source>MythTV is locked by a user.</source>
+ <translation>MythTV is locked by a user.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="543"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="533"/>
+ <source>MythTV has running or pending jobs.</source>
+ <translation>MythTV has running or pending jobs.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="545"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="535"/>
+ <source>MythTV is in a daily wakeup/shutdown period.</source>
+ <translation>MythTV is in a daily wakeup/shutdown period.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="547"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="537"/>
+ <source>MythTV is about to start a wakeup/shutdown period.</source>
+ <translation>MythTV is about to start a wakeup/shutdown period.</translation>
+ </message>
+ <message numerus="yes">
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="553"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="543"/>
+ <source>MythTV is idle and will shutdown in %n second(s).</source>
+ <translation>
+ <numerusform>MythTV is idle and will shutdown in %n second.</numerusform>
+@@ -31585,52 +31708,52 @@
+ </translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="556"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="546"/>
+ <source>MythTV is idle.</source>
+ <translation>MythTV is idle.</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="604"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="594"/>
+ <source>Unlock Shutdown</source>
+ <translation>Unlock Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="606"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="596"/>
+ <source>Lock Shutdown</source>
+ <translation>Lock Shutdown</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="608"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="598"/>
+ <source>Run mythfilldatabase</source>
+ <translation>Run mythfilldatabase</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="609"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="599"/>
+ <source>Shutdown Now</source>
+ <translation>Shutdown Now</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="610"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="600"/>
+ <source>Exit</source>
+ <translation>Exit</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="611"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="601"/>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="656"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="646"/>
+ <source>Cannot shutdown because MythTV is currently recording</source>
+- <translation>Cannot shutdown because MythTV is currently recording</translation>
++ <translation>Cannot Shutdown Because MythTV is Currently Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="667"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="657"/>
+ <source>Cannot shutdown because MythTV is about to start recording</source>
+- <translation>Cannot shutdown because MythTV is about to start recording</translation>
++ <translation>Cannot Shutdown Because MythTV is About to Start Recording</translation>
+ </message>
+ <message>
+- <location filename="../programs/mythwelcome/welcomedialog.cpp" line="678"/>
++ <location filename="../programs/mythwelcome/welcomedialog.cpp" line="668"/>
+ <source>Cannot shutdown because MythTV is about to start a wakeup/shutdown period.</source>
+ <translation>Cannot shutdown because MythTV is about to start a wakeup/shutdown period.</translation>
+ </message>
+@@ -31638,12 +31761,12 @@
+ <context>
+ <name>XMLTV_generic_config</name>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="462"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="614"/>
+ <source>Configure</source>
+ <translation>Configure</translation>
+ </message>
+ <message>
+- <location filename="../libs/libmythtv/videosource.cpp" line="463"/>
++ <location filename="../libs/libmythtv/videosource.cpp" line="615"/>
+ <source>Run XMLTV configure command.</source>
+ <translation>Run XMLTV configure command.</translation>
+ </message>
diff --git a/abs/core/mythtv/stable-30/mythtv/mythtv.install b/abs/core/mythtv/stable-30/mythtv/mythtv.install
new file mode 100644
index 0000000..aedebbf
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/mythtv.install
@@ -0,0 +1,34 @@
+# arg 1: the new package version
+post_install() {
+ gen_is_xml.py
+ gen_lib_xml.py
+ systemconfig.py -m config_xml
+}
+
+pre_upgrade() {
+ if [ "`vercmp $2 0.28`" -lt 0 ]
+ then
+ . /etc/systemconfig
+ if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ]
+ then
+ echo "upgrading from 0.27, adding new storage groups..."
+ add_storage.py --reconstruct_sg
+ fi
+ fi
+ /bin/true
+}
+
+post_upgrade() {
+ post_install
+}
+
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core/mythtv/stable-30/mythtv/pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch b/abs/core/mythtv/stable-30/mythtv/pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch
new file mode 100644
index 0000000..2845250
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch
@@ -0,0 +1,39 @@
+--- src/mythtv/programs/scripts/metadata/Movie/tmdb3.py 2017-02-23 13:18:12.000000000 +0100
++++ src/mythtv/programs/scripts/metadata/Movie/tmdb3.py 2017-02-25 13:12:40.213333328 +0100
+@@ -29,6 +29,7 @@
+
+ from optparse import OptionParser
+ import sys
++import re
+
+ def buildSingle(inetref, opts):
+ from MythTV.tmdb3.tmdb_exceptions import TMDBRequestInvalid
+@@ -122,11 +123,27 @@
+ # replace all dashes from queries to work around search behavior
+ # as negative to all text that comes afterwards
+ query = query.replace('-',' ')
++ query = query.strip() # trim extra whitespace
++ # extract year from name -- note that we require a space before the year
++ # so we don't confuse movie names for years (example: "2012 - 2009",
++ # a 2009 movie); also note that we accept optional paranthesis around
++ # the year:
++ yearRegex = re.compile(r"\s\(?((19|20)[0-9]{2})\)?$")
++ year = yearRegex.search(query)
++ if year is not None:
++ year = year.group(1)
++ # if no year was found, we'll pass year=None to searchMovie,
++ # which is the default anyway
++
++ # get rid of the year (if any) from the query text, because
++ # it causes bad TMDB results
++ query = yearRegex.sub("", query)
++ query = query.strip()
+
+ from MythTV.tmdb3 import searchMovie
+ from MythTV import VideoMetadata
+ from lxml import etree
+- results = iter(searchMovie(query))
++ results = iter(searchMovie(query, locale=None, adult=False, year=year))
+ tree = etree.XML(u'<metadata></metadata>')
+ mapping = [['runtime', 'runtime'], ['title', 'originaltitle'],
+ ['releasedate', 'releasedate'], ['tagline', 'tagline'],
diff --git a/abs/core/mythtv/stable-30/mythtv/recordings b/abs/core/mythtv/stable-30/mythtv/recordings
new file mode 100644
index 0000000..5dff16f
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/recordings
@@ -0,0 +1,145 @@
+#!/bin/bash
+
+#START=$(date +%s)
+
+#check if mythbackend is running and was just started
+for i in 1 2
+do
+if [ `cat /service/mythbackend/supervise/pid` ]
+then
+ now=$(date +%s)
+ mythbackendStartTime=`stat -c %Y /service/mythbackend/supervise/pid`
+ if [[ $(( $now - $mythbackendStartTime )) -lt 59 ]]
+ then
+ #echo "mythbackend started less than a minute ago. Sleeping..."
+ sleep 60
+ fi
+else
+ #echo "mythbackend not running. exiting."
+ exit
+fi
+done
+
+if [ -f /usr/share/mythtv/contrib/user_jobs/mythlink.pl ]
+then
+ recdir="/data/storage/disk0/media/recordings"
+ tmprecdir="/data/storage/disk0/media/tmp/recordings"
+ rm -r $tmprecdir
+ su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythlink.pl --format '%Ct/%U/%T/%T %- S%ssE%ep %- %oY-%om-%od = %S' --link '$tmprecdir'"
+
+ # rename category_types (%Ct) from numbers to names
+ for cattype in $tmprecdir/*
+ do
+ if [ $cattype == "$tmprecdir/1" ]
+ then
+ rsync -a "$cattype/" "$tmprecdir/Movies"
+ rm -r "$cattype"
+ elif [[ $cattype == "$tmprecdir/2" ]] || [[ $cattype == "$tmprecdir/4" ]]
+ then
+ rsync -a "$cattype/" "$tmprecdir/TV Shows"
+ rm -r "$cattype"
+ elif [ $cattype == "$tmprecdir/3" ]
+ then
+ rsync -a "$cattype/" "$tmprecdir/Sports"
+ rm -r "$cattype"
+ else
+ #ignore Movies, TV Shows, Sports. Move all others to TV Shows
+ if [[ $cattype != "$tmprecdir/Movies" ]] && [[ $cattype != "$tmprecdir/TV Shows" ]] && [[ $cattype != "$tmprecdir/Sports" ]]
+ then
+ if [ ! -d "$tmprecdir/TV Shows" ]
+ then
+ mkdir "$tmprecdir/TV Shows"
+ fi
+ rsync -a "$cattype" "$tmprecdir/TV Shows"
+ rm -r "$cattype"
+ fi
+ fi
+ done
+
+ #delete Deleted recgroup
+ for link in $tmprecdir/**/Deleted
+ do
+ rm -r "$link"
+ done
+
+ #move all links in recgroup dirs out to parent dir
+ for recgroup in $tmprecdir/**/*
+ do
+ if [ -d "$recgroup" ]
+ then
+ cd "$recgroup"
+ rsync -a "$recgroup/" ..
+ cd "$tmprecdir"
+ rm -r "$recgroup"
+ fi
+ done
+
+ #replace SE if no season/episode is in myth
+ for link in $tmprecdir/**/**/*\ -\ SE\ -\ *
+ do
+ newlink=`echo "$link" | sed 's/ - SE - / - /'`
+ mv "$link" "$newlink"
+ done
+ #replace SEyy if no season is in myth
+ for link in $tmprecdir/**/**/*\ -\ SE[0-9][0-9]\ -\ *
+ do
+ newlink=`echo "$link" | sed 's/ - SE/ - S00E/'`
+ mv "$link" "$newlink"
+ done
+ #replace SyyE if no episode is in myth
+ for link in $tmprecdir/**/**/*\ -\ S[0-9][0-9]E\ -\ *
+ do
+ newlink=`echo "$link" | sed 's/E - /E00 - /'`
+ mv "$link" "$newlink"
+ done
+ #replace blank original date
+ for link in $tmprecdir/**/**/*\ -\ 0000-00-00\ -\ *
+ do
+ newlink=`echo "$link" | sed 's/ - 0000-00-00 - / - /'`
+ mv "$link" "$newlink"
+ done
+ #add dash pt suffix if filename before the subtitle is the same
+ #so that plex will scan and include in library
+ uniqs="$(ls $tmprecdir/**/**/* | sed 's/ = .*//' | sort | uniq -d)"
+ SAVEIFS=$IFS
+ IFS=$'\n'
+ for link in $uniqs
+ do
+ i=1
+ for dup in `ls -v $link*`
+ do
+ newlink=`echo "$dup" | sed "s/ = /-pt$i = /"`
+ mv "$dup" "$newlink"
+ i=$((i+1))
+ done
+ done
+ IFS=$SAVEIFS
+
+ #change symlinks mtime to match the file it is linked to
+# for link in $tmprecdir/**/*
+# do
+# if [ -L "$link" ]
+# then
+# file=`readlink "$link"`
+# touch -hr "$file" "$link"
+# fi
+# done
+
+ #sync tmprecdir to recdir
+ #rsync -aOP --delete --ignore-existing "$tmprecdir/" "$recdir/"
+ rsync -aO --delete "$tmprecdir/" "$recdir/"
+
+ #check if plex media server is running
+ if [[ `pidof "Plex Media Server"` ]]
+ then
+ #get plex section and update
+ script -q -c '/usr/LH/bin/plexmediascanner.sh -l' | grep -i myth | cut -d: -f1 | while read -r line
+ do
+ /usr/LH/bin/plexmediascanner.sh --scan --refresh --section $line
+ done
+ fi
+fi
+
+#END=$(date +%s)
+#DIFF=$(( $END - $START ))
+#echo "It took $DIFF seconds"
diff --git a/abs/core/mythtv/stable-30/mythtv/revertQTsettingsForMythinstall.patch b/abs/core/mythtv/stable-30/mythtv/revertQTsettingsForMythinstall.patch
new file mode 100644
index 0000000..a760da8
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/revertQTsettingsForMythinstall.patch
@@ -0,0 +1,1118 @@
+diff --git a/mythtv/libs/libmyth/libmyth.pro b/mythtv/libs/libmyth/libmyth.pro
+index 592437f3e6..cb936c0500 100644
+--- a/mythtv/libs/libmyth/libmyth.pro
++++ b/mythtv/libs/libmyth/libmyth.pro
+@@ -128,8 +128,8 @@ LIBS += -L../libmythservicecontracts -lmythservicecontracts-$${LIBVERSIO
+ # Install headers so that plugins can compile independently
+ inc.path = $${PREFIX}/include/mythtv/
+ inc.files = dialogbox.h mythcontext.h
+-inc.files += mythwidgets.h remotefile.h volumecontrol.h
+-inc.files += mythdialogs.h
++inc.files += mythwidgets.h remotefile.h oldsettings.h volumecontrol.h
++inc.files += settings.h mythdialogs.h
+ inc.files += audio/audiooutput.h audio/audiosettings.h
+ inc.files += audio/audiooutputsettings.h audio/audiooutpututil.h
+ inc.files += audio/audioconvert.h
+diff --git a/mythtv/libs/libmyth/mythdialogs.cpp b/mythtv/libs/libmyth/mythdialogs.cpp
+index 734ece2f84..f3c08ff525 100644
+--- a/mythtv/libs/libmyth/mythdialogs.cpp
++++ b/mythtv/libs/libmyth/mythdialogs.cpp
+@@ -72,6 +72,7 @@ MythDialog::MythDialog(MythMainWindow *parent, const char *name, bool setsize)
+ {
+ move(0, 0);
+ setFixedSize(QSize(screenwidth, screenheight));
++ GetMythUI()->ThemeWidget(this);
+ }
+
+ setAutoFillBackground(true);
+@@ -313,6 +314,8 @@ MythPopupBox::MythPopupBox(MythMainWindow *parent, bool graphicPopup,
+ palette.setColor(backgroundRole(), popupBackground);
+ setPalette(palette);
+ }
++ else
++ GetMythUI()->ThemeWidget(this);
+
+ QPalette palette;
+ palette.setColor(foregroundRole(), popupHighlight);
+@@ -805,6 +808,8 @@ MythProgressDialog::MythProgressDialog(
+
+ setFont(GetMythUI()->GetMediumFont());
+
++ GetMythUI()->ThemeWidget(this);
++
+ int yoff = screenheight / 3;
+ int xoff = screenwidth / 10;
+ setGeometry(xoff, yoff, screenwidth - xoff * 2, yoff);
+diff --git a/mythtv/libs/libmythbase/libmythbase.pro b/mythtv/libs/libmythbase/libmythbase.pro
+index ea066af67e..64fae06d27 100644
+--- a/mythtv/libs/libmythbase/libmythbase.pro
++++ b/mythtv/libs/libmythbase/libmythbase.pro
+@@ -12,7 +12,7 @@ QMAKE_CLEAN += $(TARGET) $(TARGETA) $(TARGETD) $(TARGET0) $(TARGET1) $(TARGET2)
+ # Input
+ HEADERS += mthread.h mthreadpool.h
+ HEADERS += mythsocket.h mythsocket_cb.h
+-HEADERS += mythbaseexp.h mythdbcon.h mythdb.h mythdbparams.h
++HEADERS += mythbaseexp.h mythdbcon.h mythdb.h mythdbparams.h oldsettings.h
+ HEADERS += verbosedefs.h mythversion.h compat.h mythconfig.h
+ HEADERS += mythobservable.h mythevent.h
+ HEADERS += mythtimer.h mythsignalingtimer.h mythdirs.h exitcodes.h
+@@ -38,7 +38,7 @@ HEADERS += mythsorthelper.h
+
+ SOURCES += mthread.cpp mthreadpool.cpp
+ SOURCES += mythsocket.cpp
+-SOURCES += mythdbcon.cpp mythdb.cpp mythdbparams.cpp
++SOURCES += mythdbcon.cpp mythdb.cpp mythdbparams.cpp oldsettings.cpp
+ SOURCES += mythobservable.cpp mythevent.cpp
+ SOURCES += mythtimer.cpp mythsignalingtimer.cpp mythdirs.cpp
+ SOURCES += lcddevice.cpp mythstorage.cpp remotefile.cpp
+diff --git a/mythtv/libs/libmythbase/oldsettings.cpp b/mythtv/libs/libmythbase/oldsettings.cpp
+new file mode 100644
+index 0000000000..8bdd106551
+--- /dev/null
++++ b/mythtv/libs/libmythbase/oldsettings.cpp
+@@ -0,0 +1,167 @@
++
++/***************************************************************************
++ settings.cpp - description
++ -------------------
++ begin : Tuesday, October 03, 2000
++ copyright : (C) 2000 by Relatable, LLC
++ written by : Sean Ward
++ email : sward@relatable.com
++ ***************************************************************************/
++
++#include "compat.h"
++
++#include <cstdlib>
++#include <cstdio>
++#include <cstdlib>
++#include <ctime>
++
++#include <fstream>
++#include <map>
++#include <string>
++using namespace std;
++
++#include <QDir>
++
++#include "oldsettings.h"
++#include "mythlogging.h"
++
++Settings::Settings(QString strSettingsFile)
++{
++ if (strSettingsFile.length() == 0)
++ strSettingsFile = "settings.txt";
++ m_pSettings = new map<QString, QString>;
++
++ ReadSettings(strSettingsFile);
++}
++
++Settings::~Settings()
++{
++ delete m_pSettings;
++}
++
++// Setting retrieval functions
++/** Generic Setting Retrieval functions */
++QString Settings::GetSetting(QString strSetting, QString defaultvalue)
++{
++ map<QString, QString>::iterator i;
++ if ((!m_pSettings->empty()) &&
++ ((i = m_pSettings->find(strSetting)) != m_pSettings->end()))
++ {
++ return (*i).second;
++ }
++ return defaultvalue; // property doesn't exist
++}
++
++/** Generic Setting Retrieval function for numeric values */
++int Settings::GetNumSetting(QString strSetting, int defaultvalue)
++{
++ int retval = defaultvalue;
++ map<QString, QString>::iterator i;
++ if ((!m_pSettings->empty()) &&
++ ((i = m_pSettings->find(strSetting)) != m_pSettings->end()))
++ {
++ bool ok = false;
++ retval = (*i).second.toInt(&ok);
++ if (!ok)
++ retval = defaultvalue;
++ }
++ return retval; // property doesn't exist
++}
++
++/** Generic Setting Retrieval function for float values */
++float Settings::GetFloatSetting(QString strSetting, float defaultvalue)
++{
++ float retval = defaultvalue;
++
++ map<QString, QString>::iterator i;
++ if ((!m_pSettings->empty()) &&
++ ((i = m_pSettings->find(strSetting)) != m_pSettings->end()))
++ {
++ bool ok = false;
++ retval = ((*i).second).toFloat(&ok);
++ if (!ok)
++ retval = defaultvalue;
++ }
++
++ return retval; // property doesn't exist
++}
++
++// Setting Setting functions
++/** Generic Setting Setting function */
++void Settings::SetSetting(QString strSetting, QString strNewVal)
++{
++ (*m_pSettings)[strSetting] = strNewVal;
++}
++
++/** Generic Setting Setting function for int values */
++void Settings::SetSetting(QString strSetting, int nNewVal)
++{
++ QString tmp;
++ tmp = tmp.setNum(nNewVal);
++ (*m_pSettings)[strSetting] = tmp;
++}
++
++/** Generic Setting Setting function for float values */
++void Settings::SetSetting(QString strSetting, float fNewVal)
++{
++ QString tmp;
++ tmp = tmp.setNum(fNewVal);
++ (*m_pSettings)[strSetting] = tmp;
++}
++
++bool Settings::LoadSettingsFiles(QString filename, QString prefix,
++ QString confdir)
++{
++ int result = ReadSettings(prefix + "/share/mythtv/" + filename);
++ result += ReadSettings(prefix + "/etc/mythtv/" + filename);
++ result += ReadSettings(confdir + '/' + filename);
++ result += ReadSettings("./" + filename);
++ return result;
++}
++
++bool Settings::ReadSettings(QString pszFile)
++{
++ QString LOC = "(old)Settings::ReadSettings(" + pszFile + ") - ";
++ fstream fin(pszFile.toLocal8Bit().constData(), ios::in);
++
++ if (!fin.is_open())
++ {
++ LOG(VB_FILE, LOG_ERR, LOC + "No such file " + pszFile);
++ return false;
++ }
++
++ string strLine;
++ QString strKey;
++ QString strVal;
++ QString strType;
++ QString line;
++ int nSplitPoint = 0;
++
++ while(!fin.eof())
++ {
++ getline(fin,strLine);
++ line = strLine.c_str();
++
++ if ((line[0] != '#') && (!line.isEmpty()))
++ {
++ nSplitPoint = strLine.find('=');
++ if (nSplitPoint != -1)
++ {
++ strType = line.mid(0, 3);
++
++ if (strType == "flt" || strType == "int" || strType == "str")
++ strKey = line.mid(4, nSplitPoint - 4);
++ else
++ strKey = line.mid(0, nSplitPoint);
++
++ strVal = line.mid(nSplitPoint + 1, strLine.size());
++
++ (*m_pSettings)[strKey] = strVal;
++
++ LOG(VB_FILE, LOG_DEBUG, LOC + QString("'%1' = '%2'.")
++ .arg(strKey) .arg(strVal));
++ }
++ }
++ } // wend
++ return true;
++}
+diff --git a/mythtv/libs/libmythbase/oldsettings.h b/mythtv/libs/libmythbase/oldsettings.h
+new file mode 100644
+index 0000000000..85157b599c
+--- /dev/null
++++ b/mythtv/libs/libmythbase/oldsettings.h
+@@ -0,0 +1,55 @@
++/***************************************************************************
++ settings.h - description
++ -------------------
++ begin : Tuesday, October 03, 2000
++ copyright : (C) 2000 by Relatable, LLC
++ written by : Sean Ward
++ email : sward@relatable.com
++ ***************************************************************************/
++
++#ifndef OLDSETTINGS_H
++#define OLDSETTINGS_H
++
++#include <QString>
++#include <QPixmap>
++
++#include "mythbaseexp.h"
++
++/**This class contains configuration information.
++ *This object is threadsafe.
++ *@author Sean Ward
++ */
++
++class QPixmap;
++class MBASE_PUBLIC Settings {
++public:
++ explicit Settings(QString strSettingFile = "settings.txt");
++ ~Settings();
++
++ // Setting retrieval functions
++ /** Generic Setting Retrieval functions */
++ QString GetSetting(QString strSetting, QString defaultvalue = "");
++ /** Generic Setting Retrieval function for numeric values */
++ int GetNumSetting(QString strSetting, int defaultvalue = 0);
++ /** Generic Setting Retrieval function for float values */
++ float GetFloatSetting(QString strSetting, float defaultvalue = 0);
++
++ // Setting Setting functions
++ /** Generic Setting Setting function */
++ void SetSetting(QString strSetting, QString strNewVal);
++ /** Generic Setting Setting function for int values */
++ void SetSetting(QString strSetting, int nNewVal);
++ /** Generic Setting Setting function for float values */
++ void SetSetting(QString strSetting, float fNewVal);
++
++ bool LoadSettingsFiles(QString filename, QString prefix, QString confdir);
++ /** parse settings file */
++ bool ReadSettings(QString pszFile);
++private: // Private attributes
++ /** main property-value mapping for strings */
++ std::map<QString, QString> *m_pSettings;
++};
++
++void LoadSettingsFile(Settings *settings, QString filename);
++
++#endif
+diff --git a/mythtv/libs/libmythui/mythmainwindow.cpp b/mythtv/libs/libmythui/mythmainwindow.cpp
+index f7aa3d0ac1..16ce84a553 100644
+--- a/mythtv/libs/libmythui/mythmainwindow.cpp
++++ b/mythtv/libs/libmythui/mythmainwindow.cpp
+@@ -1029,6 +1029,12 @@ void MythMainWindow::Init(QString forcedpainter, bool mayReInit)
+ setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
+ resize(d->screenwidth, d->screenheight);
+
++ GetMythUI()->ThemeWidget(this);
++#ifdef Q_OS_MAC
++ // QPalette inheritance appears broken on mac, so there's no point setting the palette
++ // to the top widget each time. Instead we apply the default palette to the whole application
++ qApp->setPalette(palette());
++#endif
+ Show();
+
+ if (!GetMythDB()->GetBoolSetting("HideMouseCursor", false))
+diff --git a/mythtv/libs/libmythui/myththemebase.cpp b/mythtv/libs/libmythui/myththemebase.cpp
+index 27cb93c567..d9559a9ff8 100644
+--- a/mythtv/libs/libmythui/myththemebase.cpp
++++ b/mythtv/libs/libmythui/myththemebase.cpp
+@@ -9,6 +9,8 @@
+ #include "mythdirs.h"
+ #include "mythuihelper.h"
+
++#include "oldsettings.h" // Deprecated
++
+ class MythThemeBasePrivate
+ {
+ public:
+@@ -37,6 +39,9 @@ MythThemeBase::~MythThemeBase()
+
+ void MythThemeBase::Reload(void)
+ {
++ MythMainWindow *mainWindow = GetMythMainWindow();
++ QRect uiSize = mainWindow->GetUIScreenRect();
++
+ GetGlobalFontMap()->Clear();
+ XMLParseBase::ClearGlobalObjectStore();
+ GetGlobalFontManager()->ReleaseFonts("UI");
+@@ -50,7 +55,14 @@ void MythThemeBase::Reload(void)
+ if (!XMLParseBase::CopyWindowFromBase("backgroundwindow",
+ d->backgroundscreen))
+ {
+- // Nada. All themes should use the MythUI code now.
++ QString backgroundname = GetMythUI()->qtconfig()->GetSetting("BackgroundPixmap");
++ backgroundname = GetMythUI()->GetThemeDir() + backgroundname;
++
++ d->backimg = new MythUIImage(backgroundname, d->backgroundscreen,
++ "backimg");
++ d->backimg->SetPosition(mainWindow->NormPoint(QPoint(0, 0)));
++ d->backimg->SetSize(uiSize.width(), uiSize.height());
++ d->backimg->Load();
+ }
+
+ d->background->AddScreen(d->backgroundscreen, false);
+@@ -59,6 +71,7 @@ void MythThemeBase::Reload(void)
+ void MythThemeBase::Init(void)
+ {
+ MythMainWindow *mainWindow = GetMythMainWindow();
++ QRect uiSize = mainWindow->GetUIScreenRect();
+
+ d->background = new MythScreenStack(mainWindow, "background");
+ d->background->DisableEffects();
+@@ -71,7 +84,14 @@ void MythThemeBase::Init(void)
+ if (!XMLParseBase::CopyWindowFromBase("backgroundwindow",
+ d->backgroundscreen))
+ {
+- // Nada. All themes should use the MythUI code now.
++ QString backgroundname = GetMythUI()->qtconfig()->GetSetting("BackgroundPixmap");
++ backgroundname = GetMythUI()->GetThemeDir() + backgroundname;
++
++ d->backimg = new MythUIImage(backgroundname, d->backgroundscreen,
++ "backimg");
++ d->backimg->SetPosition(mainWindow->NormPoint(QPoint(0, 0)));
++ d->backimg->SetSize(uiSize.width(), uiSize.height());
++ d->backimg->Load();
+ }
+
+ d->background->AddScreen(d->backgroundscreen, false);
+diff --git a/mythtv/libs/libmythui/mythuihelper.cpp b/mythtv/libs/libmythui/mythuihelper.cpp
+index 95eaacff66..0cb2d81d86 100644
+--- a/mythtv/libs/libmythui/mythuihelper.cpp
++++ b/mythtv/libs/libmythui/mythuihelper.cpp
+@@ -24,6 +24,7 @@
+ #include "mythdirs.h"
+ #include "mythlogging.h"
+ #include "mythdownloadmanager.h"
++#include "oldsettings.h"
+ #include "mythdb.h"
+ #include "remotefile.h"
+ #include "mythcorecontext.h"
+@@ -103,6 +104,8 @@ public:
+ double GetPixelAspectRatio(void);
+ void WaitForScreenChange(void) const;
+
++ Settings *m_qtThemeSettings; ///< Text/button/background colours, etc
++
+ bool m_themeloaded; ///< Do we have a palette and pixmap to use?
+ QString m_menuthemepathname;
+ QString m_themepathname;
+@@ -174,7 +177,8 @@ int MythUIHelperPrivate::w_override = -1;
+ int MythUIHelperPrivate::h_override = -1;
+
+ MythUIHelperPrivate::MythUIHelperPrivate(MythUIHelper *p)
+- : m_themeloaded(false),
++ : m_qtThemeSettings(new Settings()),
++ m_themeloaded(false),
+ m_wmult(1.0), m_hmult(1.0), m_pixelAspectRatio(-1.0),
+ m_xbase(0), m_ybase(0), m_height(0), m_width(0),
+ m_baseWidth(800), m_baseHeight(600), m_isWide(false),
+@@ -208,6 +212,7 @@ MythUIHelperPrivate::~MythUIHelperPrivate()
+
+ delete m_cacheLock;
+ delete m_imageThreadPool;
++ delete m_qtThemeSettings;
+ delete screensaver;
+
+ if (display_res)
+@@ -500,6 +505,10 @@ void MythUIHelper::LoadQtConfig(void)
+ // Note the possibly changed screen settings
+ d->GetScreenBounds();
+
++ delete d->m_qtThemeSettings;
++
++ d->m_qtThemeSettings = new Settings;
++
+ qApp->setStyle("Windows");
+
+ QString themename = GetMythDB()->GetSetting("Theme", DEFAULT_UI_THEME);
+@@ -525,6 +534,11 @@ void MythUIHelper::LoadQtConfig(void)
+ d->m_themepathname = themedir + '/';
+ d->m_searchPaths.clear();
+
++ QString qtlook = "qtlook.txt";
++ if (!FindThemeFile(qtlook))
++ LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to find any qtlook.txt in the theme search path");
++
++ d->m_qtThemeSettings->ReadSettings(qtlook);
+ d->m_themeloaded = false;
+
+ themename = GetMythDB()->GetSetting("MenuTheme", "defaultmenu");
+@@ -535,6 +549,11 @@ void MythUIHelper::LoadQtConfig(void)
+ d->m_menuthemepathname = FindMenuThemeDir(themename);
+ }
+
++Settings *MythUIHelper::qtconfig(void)
++{
++ return d->m_qtThemeSettings;
++}
++
+ void MythUIHelper::UpdateImageCache(void)
+ {
+ QMutexLocker locker(d->m_cacheLock);
+@@ -1364,6 +1383,114 @@ QList<ThemeInfo> MythUIHelper::GetThemes(ThemeType type)
+ return themeList;
+ }
+
++void MythUIHelper::SetPalette(QWidget *widget)
++{
++ QPalette pal = widget->palette();
++
++ const QString names[] = { "Foreground", "Button", "Light", "Midlight",
++ "Dark", "Mid", "Text", "BrightText", "ButtonText",
++ "Base", "Background", "Shadow", "Highlight",
++ "HighlightedText"
++ };
++
++ QString type = "Active";
++
++ for (int i = 0; i < 13; i++)
++ {
++ QString color = d->m_qtThemeSettings->GetSetting(type + names[i]);
++
++ if (!color.isEmpty())
++ pal.setColor(QPalette::Active, (QPalette::ColorRole) i,
++ createColor(color));
++ }
++
++ type = "Disabled";
++
++ for (int i = 0; i < 13; i++)
++ {
++ QString color = d->m_qtThemeSettings->GetSetting(type + names[i]);
++
++ if (!color.isEmpty())
++ pal.setColor(QPalette::Disabled, (QPalette::ColorRole) i,
++ createColor(color));
++ }
++
++ type = "Inactive";
++
++ for (int i = 0; i < 13; i++)
++ {
++ QString color = d->m_qtThemeSettings->GetSetting(type + names[i]);
++
++ if (!color.isEmpty())
++ pal.setColor(QPalette::Inactive, (QPalette::ColorRole) i,
++ createColor(color));
++ }
++
++ widget->setPalette(pal);
++}
++
++void MythUIHelper::ThemeWidget(QWidget *widget)
++{
++ if (d->m_themeloaded)
++ {
++ widget->setPalette(d->m_palette);
++ return;
++ }
++
++ SetPalette(widget);
++ d->m_palette = widget->palette();
++
++ QPixmap *bgpixmap = NULL;
++
++ if (!d->m_qtThemeSettings->GetSetting("BackgroundPixmap").isEmpty())
++ {
++ QString pmapname = d->m_qtThemeSettings->GetSetting("BackgroundPixmap");
++ if (!FindThemeFile(pmapname))
++ LOG(VB_GENERAL, LOG_ERR, QString(LOC + "Failed to find '%1' in the theme search path")
++ .arg(d->m_qtThemeSettings->GetSetting("BackgroundPixmap")));
++
++ bgpixmap = LoadScalePixmap(pmapname);
++
++ if (bgpixmap)
++ {
++ d->m_palette.setBrush(widget->backgroundRole(), QBrush(*bgpixmap));
++ widget->setPalette(d->m_palette);
++ }
++ }
++ else if (!d->m_qtThemeSettings
++ ->GetSetting("TiledBackgroundPixmap").isEmpty())
++ {
++ QString pmapname = d->m_qtThemeSettings->GetSetting("TiledBackgroundPixmap");
++
++ if (!FindThemeFile(pmapname))
++ LOG(VB_GENERAL, LOG_ERR, QString(LOC + "Failed to find '%1' in the theme search path")
++ .arg(d->m_qtThemeSettings->GetSetting("TiledBackgroundPixmap")));
++
++ int width, height;
++ float wmult, hmult;
++
++ GetScreenSettings(width, wmult, height, hmult);
++
++ bgpixmap = LoadScalePixmap(pmapname);
++
++ if (bgpixmap)
++ {
++ QPixmap background(width, height);
++ QPainter tmp(&background);
++
++ tmp.drawTiledPixmap(0, 0, width, height, *bgpixmap);
++ tmp.end();
++
++ d->m_palette.setBrush(widget->backgroundRole(), QBrush(background));
++ widget->setPalette(d->m_palette);
++ }
++ }
++
++ d->m_themeloaded = true;
++
++ delete bgpixmap;
++}
++
+ bool MythUIHelper::FindThemeFile(QString &path)
+ {
+ QFileInfo fi(path);
+diff --git a/mythtv/libs/libmythui/mythuihelper.cpp b/mythtv/libs/libmythui/mythuihelper.cpp
+index 95eaacff66..fbcb6f955a 100644
+--- a/mythtv/libs/libmythui/mythuihelper.cpp
++++ b/mythtv/libs/libmythui/mythuihelper.cpp
+@@ -1402,6 +1402,188 @@ bool MythUIHelper::FindThemeFile(QString &path)
+ return foundit;
+ }
+
++QImage *MythUIHelper::LoadScaleImage(QString filename)
++{
++ LOG(VB_GUI | VB_FILE, LOG_INFO, LOC +
++ QString("LoadScaleImage(%1)").arg(filename));
++
++ if (filename.isEmpty())
++ return NULL;
++
++ if ((!filename.startsWith("http://")) &&
++ (!filename.startsWith("https://")) &&
++ (!filename.startsWith("ftp://")) &&
++ (!filename.startsWith("myth://")) &&
++ (!FindThemeFile(filename)))
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC + QString("LoadScaleImage(%1) ")
++ .arg(filename) + "Unable to find image file");
++
++ return NULL;
++ }
++
++ QImage *ret = NULL;
++ QImage tmpimage;
++ int width, height;
++ float wmult, hmult;
++
++ GetScreenSettings(width, wmult, height, hmult);
++
++ if (filename.startsWith("myth://"))
++ {
++ RemoteFile *rf = new RemoteFile(filename, false, false, 0);
++
++ QByteArray data;
++ bool loaded = rf->SaveAs(data);
++ delete rf;
++
++ if (loaded)
++ tmpimage.loadFromData(data);
++ else
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScaleImage(%1) failed to load remote image")
++ .arg(filename));
++ }
++ }
++ else if ((filename.startsWith("http://")) ||
++ (filename.startsWith("https://")) ||
++ (filename.startsWith("ftp://")))
++ {
++ QByteArray data;
++
++ if (GetMythDownloadManager()->download(filename, &data))
++ tmpimage.loadFromData(data);
++ else
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScaleImage(%1) failed to load remote image")
++ .arg(filename));
++ }
++ }
++ else
++ {
++ tmpimage.load(filename);
++ }
++
++ if (tmpimage.isNull())
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScaleImage(%1) failed to load image")
++ .arg(filename));
++
++ return NULL;
++ }
++
++ if (width != d->m_baseWidth || height != d->m_baseHeight)
++ {
++ QImage tmp2 = tmpimage.scaled(
++ (int)(tmpimage.width() * wmult),
++ (int)(tmpimage.height() * hmult),
++ Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
++
++ ret = new QImage(tmp2);
++ }
++ else
++ {
++ ret = new QImage(tmpimage);
++
++ if (!ret->width() || !ret->height())
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScaleImage(%1) invalid image dimensions")
++ .arg(filename));
++
++ delete ret;
++ return NULL;
++ }
++ }
++
++ return ret;
++}
++
++QPixmap *MythUIHelper::LoadScalePixmap(QString filename)
++{
++ LOG(VB_GUI | VB_FILE, LOG_INFO, LOC +
++ QString("LoadScalePixmap(%1)").arg(filename));
++
++ if (filename.isEmpty())
++ return NULL;
++
++ if (!FindThemeFile(filename) && (!filename.startsWith("myth:")))
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC + QString("LoadScalePixmap(%1)")
++ .arg(filename) + "Unable to find image file");
++
++ return NULL;
++ }
++
++ QPixmap *ret = NULL;
++ QImage tmpimage;
++ int width, height;
++ float wmult, hmult;
++
++ GetScreenSettings(width, wmult, height, hmult);
++
++ if (filename.startsWith("myth://"))
++ {
++ RemoteFile *rf = new RemoteFile(filename, false, false, 0);
++
++ QByteArray data;
++ bool loaded = rf->SaveAs(data);
++ delete rf;
++
++ if (loaded)
++ {
++ tmpimage.loadFromData(data);
++ }
++ else
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScalePixmap(%1): failed to load remote image")
++ .arg(filename));
++ }
++ }
++ else
++ {
++ tmpimage.load(filename);
++ }
++
++ if (width != d->m_baseWidth || height != d->m_baseHeight)
++ {
++ if (tmpimage.isNull())
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScalePixmap(%1) failed to load image")
++ .arg(filename));
++
++ return NULL;
++ }
++
++ QImage tmp2 = tmpimage.scaled((int)(tmpimage.width() * wmult),
++ (int)(tmpimage.height() * hmult),
++ Qt::IgnoreAspectRatio,
++ Qt::SmoothTransformation);
++ ret = new QPixmap(QPixmap::fromImage(tmp2));
++ }
++ else
++ {
++ ret = new QPixmap(QPixmap::fromImage(tmpimage));
++
++ if (!ret->width() || !ret->height())
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("LoadScalePixmap(%1) invalid image dimensions")
++ .arg(filename));
++
++ delete ret;
++ return NULL;
++ }
++ }
++
++ return ret;
++}
++
+ MythImage *MythUIHelper::LoadCacheImage(QString srcfile, QString label,
+ MythPainter *painter,
+ ImageCacheMode cacheMode)
+diff --git a/mythtv/libs/libmythui/mythuihelper.h b/mythtv/libs/libmythui/mythuihelper.h
+index d4f87b2242..805fbf3536 100644
+--- a/mythtv/libs/libmythui/mythuihelper.h
++++ b/mythtv/libs/libmythui/mythuihelper.h
+@@ -18,6 +18,7 @@ class MythPainter;
+ class MythImage;
+ class QImage;
+ class QWidget;
++class Settings;
+ class QPixmap;
+ class QSize;
+
+@@ -63,6 +64,8 @@ class MUI_PUBLIC MythUIHelper
+ void IncludeInCacheSize(MythImage *im);
+ void ExcludeFromCacheSize(MythImage *im);
+
++ Settings *qtconfig(void);
++
+ bool IsScreenSetup(void);
+ bool IsTopScreenInitialized(void);
+
+@@ -80,12 +83,16 @@ class MUI_PUBLIC MythUIHelper
+ static void ParseGeometryOverride(const QString &geometry);
+ bool IsGeometryOverridden(void);
+
++ QPixmap *LoadScalePixmap(QString filename);
++ QImage *LoadScaleImage(QString filename);
+ /// Returns a reference counted image from the cache.
+ /// \note The reference count is set for one use call DecrRef() to delete.
+ MythImage *LoadCacheImage(QString srcfile, QString label,
+ MythPainter *painter,
+ ImageCacheMode cacheMode = kCacheNormal);
+
++ void ThemeWidget(QWidget *widget);
++
+ QString FindThemeDir(const QString &themename, bool doFallback = true);
+ QString FindMenuThemeDir(const QString &menuname);
+ QString GetThemeDir(void);
+@@ -141,6 +148,7 @@ class MUI_PUBLIC MythUIHelper
+ ~MythUIHelper();
+
+ private:
++ void SetPalette(QWidget *widget);
+ void InitializeScreenSettings(void);
+
+ void ClearOldImageCache(void);
+diff --git a/mythtv/themes/MythCenter-wide/qtlook.txt b/mythtv/themes/MythCenter-wide/qtlook.txt
+new file mode 100644
+index 0000000000..17b2a40a90
+--- /dev/null
++++ b/mythtv/themes/MythCenter-wide/qtlook.txt
+@@ -0,0 +1,98 @@
++# Color of the background
++str BackgroundColor=SteelBlue
++# Color of lines, text, etc
++str ForegroundColor=white
++# Pixmap to use for the background
++str BackgroundPixmap=ui/background.png
++
++# Colors for the different program categories
++str Cat_Comedy=DarkOrchid
++str Cat_Animals=ForestGreen
++str Cat_Nature=SprintGreen
++str Cat_SciFi=DarkBlue
++str Cat_Horror=firebrick3
++str Cat_Action=maroon
++str Cat_Game=orchid
++str Cat_Children's=MediumSlateBlue
++str Cat_Edu=CornflowerBlue
++str Cat_Adult=thistle3
++str Cat_Musical=turquoise3
++str Cat_News=DarkOrange3
++str Cat_Reality=sienna
++str Cat_Cooking=tan3
++str Cat_Doc=goldenrod
++str Cat_Sports=DarkCyan
++str Cat_Mystery=SlateGrey
++str Cat_Drama=rosybrown3
++str Cat_Classic=grey62
++str Cat_Crime=MediumVioletRed
++str Cat_Talk=MediumTurquoise
++
++str ActiveForeground=#ffffff
++str ActiveButton=#38689c
++str ActiveLight=#5788c3
++str ActiveMidlight=#4871a2
++str ActiveDark=#162231
++str ActiveMid=#37567b
++str ActiveText=#dcdcdc
++str ActiveBrightText=#5788c3
++str ActiveButtonText=#ffffff
++str ActiveBase=#002a4e
++str ActiveBackground=#426794
++str ActiveShadow=#000000
++str ActiveHighlight=#70a0d8
++str ActiveHighlightedText=#000000
++
++str InactiveForeground=#ffffff
++str InactiveButton=#426794
++str InactiveLight=#5788c3
++str InactiveMidlight=#4871a2
++str InactiveDark=#162231
++str InactiveMid=#37567b
++str InactiveText=#dcdcdc
++str InactiveBrightText=#5788c3
++str InactiveButtonText=#ffffff
++str InactiveBase=#002a4e
++str InactiveBackground=#426794
++str InactiveShadow=#000000
++str InactiveHighlight=#5cb3ff
++str InactiveHighlightedText=#000000
++
++str DisabledForeground=#555555
++str DisabledButton=#426794
++str DisabledLight=#5788c3
++str DisabledMidlight=#4871a2
++str DisabledDark=#162231
++str DisabledMid=#37567b
++str DisabledText=#37567b
++str DisabledBrightText=#5788c3
++str DisabledButtonText=#ffffff
++str DisabledBase=#002a4e
++str DisabledBackground=#426794
++str DisabledShadow=#000000
++str DisabledHighlight=#000080
++str DisabledHighlightedText=#ffffff
++
++str curTimeChan_bgColor=#8f2813
++str curTimeChan_fgColor=#ffffff
++str date_bgColor=#0f2e8f
++str date_dsColor=#000000
++str date_fgColor=#ffffff
++str chan_bgColor=#0f2f5a
++str chan_dsColor=#000000
++str chan_fgColor=#ffffff
++str time_bgColor=#0f2e8f
++str time_dsColor=#000000
++str time_fgColor=#ffffff
++str prog_bgColor=#2d587b
++str prog_fgColor=#ffffff
++str progLine_Color=#104064
++str progArrow_Color=#ffffff
++int progArrow_Type=0
++str curProg_bgColor=#85a5bc
++str curRecProg_bgColor=#bc4c32
++str curProg_dsColor=#000000
++str curProg_fgColor=#eefb92
++str misChanIcon_bgColor=#000000
++str misChanIcon_fgColor=#ffffff
++
+diff --git a/mythtv/themes/MythCenter/qtlook.txt b/mythtv/themes/MythCenter/qtlook.txt
+new file mode 100644
+index 0000000000..17b2a40a90
+--- /dev/null
++++ b/mythtv/themes/MythCenter/qtlook.txt
+@@ -0,0 +1,98 @@
++# Color of the background
++str BackgroundColor=SteelBlue
++# Color of lines, text, etc
++str ForegroundColor=white
++# Pixmap to use for the background
++str BackgroundPixmap=ui/background.png
++
++# Colors for the different program categories
++str Cat_Comedy=DarkOrchid
++str Cat_Animals=ForestGreen
++str Cat_Nature=SprintGreen
++str Cat_SciFi=DarkBlue
++str Cat_Horror=firebrick3
++str Cat_Action=maroon
++str Cat_Game=orchid
++str Cat_Children's=MediumSlateBlue
++str Cat_Edu=CornflowerBlue
++str Cat_Adult=thistle3
++str Cat_Musical=turquoise3
++str Cat_News=DarkOrange3
++str Cat_Reality=sienna
++str Cat_Cooking=tan3
++str Cat_Doc=goldenrod
++str Cat_Sports=DarkCyan
++str Cat_Mystery=SlateGrey
++str Cat_Drama=rosybrown3
++str Cat_Classic=grey62
++str Cat_Crime=MediumVioletRed
++str Cat_Talk=MediumTurquoise
++
++str ActiveForeground=#ffffff
++str ActiveButton=#38689c
++str ActiveLight=#5788c3
++str ActiveMidlight=#4871a2
++str ActiveDark=#162231
++str ActiveMid=#37567b
++str ActiveText=#dcdcdc
++str ActiveBrightText=#5788c3
++str ActiveButtonText=#ffffff
++str ActiveBase=#002a4e
++str ActiveBackground=#426794
++str ActiveShadow=#000000
++str ActiveHighlight=#70a0d8
++str ActiveHighlightedText=#000000
++
++str InactiveForeground=#ffffff
++str InactiveButton=#426794
++str InactiveLight=#5788c3
++str InactiveMidlight=#4871a2
++str InactiveDark=#162231
++str InactiveMid=#37567b
++str InactiveText=#dcdcdc
++str InactiveBrightText=#5788c3
++str InactiveButtonText=#ffffff
++str InactiveBase=#002a4e
++str InactiveBackground=#426794
++str InactiveShadow=#000000
++str InactiveHighlight=#5cb3ff
++str InactiveHighlightedText=#000000
++
++str DisabledForeground=#555555
++str DisabledButton=#426794
++str DisabledLight=#5788c3
++str DisabledMidlight=#4871a2
++str DisabledDark=#162231
++str DisabledMid=#37567b
++str DisabledText=#37567b
++str DisabledBrightText=#5788c3
++str DisabledButtonText=#ffffff
++str DisabledBase=#002a4e
++str DisabledBackground=#426794
++str DisabledShadow=#000000
++str DisabledHighlight=#000080
++str DisabledHighlightedText=#ffffff
++
++str curTimeChan_bgColor=#8f2813
++str curTimeChan_fgColor=#ffffff
++str date_bgColor=#0f2e8f
++str date_dsColor=#000000
++str date_fgColor=#ffffff
++str chan_bgColor=#0f2f5a
++str chan_dsColor=#000000
++str chan_fgColor=#ffffff
++str time_bgColor=#0f2e8f
++str time_dsColor=#000000
++str time_fgColor=#ffffff
++str prog_bgColor=#2d587b
++str prog_fgColor=#ffffff
++str progLine_Color=#104064
++str progArrow_Color=#ffffff
++int progArrow_Type=0
++str curProg_bgColor=#85a5bc
++str curRecProg_bgColor=#bc4c32
++str curProg_dsColor=#000000
++str curProg_fgColor=#eefb92
++str misChanIcon_bgColor=#000000
++str misChanIcon_fgColor=#ffffff
++
+diff --git a/mythtv/themes/Terra/qtlook.txt b/mythtv/themes/Terra/qtlook.txt
+new file mode 100644
+index 0000000000..0dc0f7bcb7
+--- /dev/null
++++ b/mythtv/themes/Terra/qtlook.txt
+@@ -0,0 +1,95 @@
++# Color of the background
++str BackgroundColor=#484537
++# Color of lines, text, etc
++str ForegroundColor=#dddddd
++
++# Colors for the different program categories
++str Cat_Comedy=DarkOrchid
++str Cat_Animals=ForestGreen
++str Cat_Nature=SprintGreen
++str Cat_SciFi=DarkBlue
++str Cat_Horror=firebrick3
++str Cat_Action=maroon
++str Cat_Game=orchid
++str Cat_Children's=MediumSlateBlue
++str Cat_Edu=CornflowerBlue
++str Cat_Adult=thistle3
++str Cat_Musical=turquoise3
++str Cat_News=DarkOrange3
++str Cat_Reality=sienna
++str Cat_Cooking=tan3
++str Cat_Doc=goldenrod
++str Cat_Sports=DarkCyan
++str Cat_Mystery=SlateGrey
++str Cat_Drama=rosybrown3
++str Cat_Classic=grey62
++str Cat_Crime=MediumVioletRed
++str Cat_Talk=MediumTurquoise
++
++str ActiveForeground=#dddddd
++str ActiveButton=#585c47
++str ActiveLight=#a7ac93
++str ActiveMidlight=#4871a2
++str ActiveDark=#8a916f
++str ActiveMid=#464345
++str ActiveText=#333333
++str ActiveBrightText=#5788c3
++str ActiveButtonText=#484537
++str ActiveBase=#9fa589
++str ActiveBackground=#484537
++str ActiveShadow=#333333
++str ActiveHighlight=#8a916f
++str ActiveHighlightedText=#000000
++
++str InactiveForeground=#dddddd
++str InactiveButton=#585c47
++str InactiveLight=#a7ac93
++str InactiveMidlight=#4871a2
++str InactiveDark=#162231
++str InactiveMid=#464345
++str InactiveText=#999999
++str InactiveBrightText=#5788c3
++str InactiveButtonText=#dddddd
++str InactiveBase=#a7ac93
++str InactiveBackground=#484537
++str InactiveShadow=#333333
++str InactiveHighlight=#8a916f
++str InactiveHighlightedText=#000000
++
++str DisabledForeground=#555555
++str DisabledButton=#555555
++str DisabledLight=#585c47
++str DisabledMidlight=#4871a2
++str DisabledDark=#162231
++str DisabledMid=#464345
++str DisabledText=#464345
++str DisabledBrightText=#5788c3
++str DisabledButtonText=#666666
++str DisabledBase=#767662
++str DisabledBackground=#484537
++str DisabledShadow=#333333
++str DisabledHighlight=#a7ac93
++str DisabledHighlightedText=#dddddd
++
++str curTimeChan_bgColor=#8f2813
++str curTimeChan_fgColor=#dddddd
++str date_bgColor=#0f2e8f
++str date_dsColor=#000000
++str date_fgColor=#dddddd
++str chan_bgColor=#0f2f5a
++str chan_dsColor=#000000
++str chan_fgColor=#dddddd
++str time_bgColor=#0f2e8f
++str time_dsColor=#000000
++str time_fgColor=#dddddd
++str prog_bgColor=#2d587b
++str prog_fgColor=#dddddd
++str progLine_Color=#104064
++str progArrow_Color=#dddddd
++int progArrow_Type=0
++str curProg_bgColor=#85a5bc
++str curRecProg_bgColor=#bc4c32
++str curProg_dsColor=#000000
++str curProg_fgColor=#eefb92
++str misChanIcon_bgColor=#000000
++str misChanIcon_fgColor=#dddddd
diff --git a/abs/core/mythtv/stable-30/mythtv/searchMetatdataSelectedGrabber.patch b/abs/core/mythtv/stable-30/mythtv/searchMetatdataSelectedGrabber.patch
new file mode 100644
index 0000000..41e0871
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/searchMetatdataSelectedGrabber.patch
@@ -0,0 +1,18 @@
+--- src/mythtv/libs/libmythmetadata/metadatadownload.cpp.orig 2016-10-06 19:52:36.807746878 +0000
++++ src/mythtv/libs/libmythmetadata/metadatadownload.cpp 2016-10-06 19:42:06.045651726 +0000
+@@ -517,6 +517,7 @@
+
+ // initial search mode
+ if (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000" &&
++ !lookup->GetInetref().endsWith("_") &&
+ (lookup->GetStep() == kLookupSearch || lookup->GetStep() == kLookupData))
+ {
+ // with inetref
+@@ -575,6 +576,7 @@
+
+ // initial search mode
+ if (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000" &&
++ !lookup->GetInetref().endsWith("_") &&
+ (lookup->GetStep() == kLookupSearch || lookup->GetStep() == kLookupData))
+ {
+ // with inetref
diff --git a/abs/core/mythtv/stable-30/mythtv/suggestedstarttime.patch.v1 b/abs/core/mythtv/stable-30/mythtv/suggestedstarttime.patch.v1
new file mode 100644
index 0000000..26d4c36
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/suggestedstarttime.patch.v1
@@ -0,0 +1,32 @@
+diff --git a/mythtv/programs/mythbackend/httpstatus.cpp b/mythtv/programs/mythbackend/httpstatus.cpp
+index 8571a58..be0272f 100644
+--- a/mythtv/programs/mythbackend/httpstatus.cpp
++++ b/mythtv/programs/mythbackend/httpstatus.cpp
+@@ -1392,13 +1392,17 @@ int HttpStatus::PrintMachineInfo( QTextStream &os, QDomElement info )
+ QString sStatus = e.attribute( "status" , "" );
+ QDateTime next = MythDate::fromString( e.attribute( "next" , "" ));
+ QString sNext = next.isNull() ? "" :
+- MythDate::toString(next, MythDate::kDatabase);
++ MythDate::toString(next, MythDate::kDateTimeFull);
+ QString sMsg = "";
+
+ QDateTime thru = MythDate::fromString( e.attribute( "guideThru", "" ));
+
+ QDomText text = e.firstChild().toText();
+
++ QString mfdblrs =
++ gCoreContext->GetSetting("mythfilldatabaseLastRunStart");
++ QDateTime lastrunstart = MythDate::fromString(mfdblrs);
++
+ if (!text.isNull())
+ sMsg = text.nodeValue();
+
+@@ -1412,7 +1416,7 @@ int HttpStatus::PrintMachineInfo( QTextStream &os, QDomElement info )
+
+ os << sStatus << "<br />\r\n";
+
+- if (!next.isNull() && sNext >= sStart)
++ if (!next.isNull() && next >= lastrunstart)
+ {
+ os << " Suggested next mythfilldatabase run: "
+ << sNext << ".<br />\r\n";
diff --git a/abs/core/mythtv/stable-30/mythtv/videoAlwaysUseBookmark.patch b/abs/core/mythtv/stable-30/mythtv/videoAlwaysUseBookmark.patch
new file mode 100644
index 0000000..7a0b428
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythtv/videoAlwaysUseBookmark.patch
@@ -0,0 +1,22 @@
+--- src/mythtv/programs/mythfrontend/main.cpp.orig 2014-10-05 21:16:54.226667223 +0000
++++ src/mythtv/programs/mythfrontend/main.cpp 2014-10-06 20:31:16.822482368 +0000
+@@ -1166,14 +1166,11 @@
+
+ if (useBookmark && bookmarkPresent)
+ {
+- MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+- BookmarkDialog *bookmarkdialog = new BookmarkDialog(pginfo, mainStack);
+- if (!bookmarkdialog->Create())
+- {
+- delete bookmarkdialog;
+- delete pginfo;
+- return res;
+- }
++ TV::StartTV(pginfo, kStartTVNoFlags);
++
++ res = 0;
++
++ delete pginfo;
+ }
+ else
+ {
diff --git a/abs/core/mythtv/stable-30/mythweb/Channel.php_remove_small_icons.patch b/abs/core/mythtv/stable-30/mythweb/Channel.php_remove_small_icons.patch
new file mode 100644
index 0000000..f786d15
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/Channel.php_remove_small_icons.patch
@@ -0,0 +1,14 @@
+diff --git a/modules/tv/classes/Channel.php b/modules/tv/classes/Channel.php
+index a4350283..be45b6ff 100644
+--- ./modules/tv/classes/Channel.php
++++ ./modules/tv/classes/Channel.php
+@@ -113,6 +113,9 @@ class Channel extends MythBase {
+ foreach ($channel_data AS $key => $value)
+ $this->$key = $value;
+ $this->icon = 'data/tv_icons/'.basename($channel_data['icon']);
++ // Remove icons smaller than 100 bytes
++ if (file_exists($this->icon) && filesize($this->icon) < 100)
++ unlink($this->icon);
+ // Try to copy over any missing channel icons
+ if ($channel_data['icon'] && !file_exists($this->icon)) {
+ // Local file?
diff --git a/abs/core/mythtv/stable-30/mythweb/PKGBUILD b/abs/core/mythtv/stable-30/mythweb/PKGBUILD
new file mode 100644
index 0000000..17e8c04
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/PKGBUILD
@@ -0,0 +1,60 @@
+pkgname=mythweb
+pkgver=30.0
+pkgrel=1
+commit_hash=`cat ../git_src/git_hash_web`
+pkgdesc="Web interface for MythTV's backend, $commit_hash"
+arch=('x86_64')
+url="http://www.mythtv.org"
+license=('GPL')
+depends=('lighttpd' "mythtv>=${pkgver}" 'php' 'supplemental-web')
+groups=('mythtv-extras')
+install=mythweb.install
+
+patches=('video.css.patch'
+ 'Channel.php_remove_small_icons.patch')
+source=(`echo ${patches[@]:0}`
+ 'mythweb.include'
+ 'mythweb_gen_light.conf')
+
+build() {
+ if [ -e ${srcdir}/mythweb ]
+ then
+ msg "Removing old mythweb src"
+ rm -rf ${srcdir}/mythweb
+ fi
+
+ cd ${startdir}
+ msg "Copying in mythweb git_src"
+ cp -rp ../git_src/mythweb $srcdir
+ cd ${srcdir}/$pkgname
+
+ msg "--------------------------applying patches------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${srcdir}/$i || return 1
+ done
+ msg "--------------------------done applying patches-------------------------"
+
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+}
+
+package() {
+ DOCROOT=/data/srv/httpd/mythweb
+ mkdir -p $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+ rsync -arp --exclude .git* --delete-excluded $srcdir/mythweb/* $pkgdir/$DOCROOT
+ rm $pkgdir/$DOCROOT/README
+ chown -R http:http $pkgdir/$DOCROOT
+ chmod -R 775 $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+
+ #install conf files for lighttpd
+ mkdir -p $pkgdir/etc/lighttpd
+ install -D -m 644 $srcdir/mythweb.include $pkgdir/etc/lighttpd/
+ #gen_light_conf
+ install -D -m0744 ${srcdir}/mythweb_gen_light.conf ${pkgdir}/etc/gen_light_conf.d/mythweb.conf
+}
+md5sums=('668a36e404c8254f56e7a7304e655332'
+ '333d145899a1b48a7648d933344ee9ed'
+ '7645a6399434cbba35639713ac5d88e0'
+ 'df190116b3aba35720fb6631885f973f')
diff --git a/abs/core/mythtv/stable-30/mythweb/mythweb.include b/abs/core/mythtv/stable-30/mythweb/mythweb.include
new file mode 100644
index 0000000..18e9be1
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/mythweb.include
@@ -0,0 +1,8 @@
+alias.url += ( "/mythweb" => "/data/srv/httpd/mythweb/")
+
+url.rewrite-once = (
+"^/{1,2}mythweb/(css|data|images|js|themes|skins|[a-z_]+\.(php|pl)).*" => "$0",
+"^/{1,2}mythweb/(pl(/.*)?)$" => "/mythweb/mythweb.pl/$1",
+"^/{1,2}mythweb/(.+)$" => "/mythweb/mythweb.php/$1",
+"^/{1,2}mythweb/(.*)$" => "/mythweb/mythweb.php"
+) \ No newline at end of file
diff --git a/abs/core/mythtv/stable-30/mythweb/mythweb.install b/abs/core/mythtv/stable-30/mythweb/mythweb.install
new file mode 100644
index 0000000..b8e31a8
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/mythweb.install
@@ -0,0 +1,22 @@
+post_install() {
+ echo "==> Setting mythweb permissions."
+ chmod -R 755 /data/srv/httpd/mythweb/
+ chown mythtv:http /data/srv/httpd/mythweb/data/tv_icons
+ chmod -R 775 /data/srv/httpd/mythweb/{image_cache,php_sessions,data}
+ echo "==> Reading lighttpd's configuration file."
+ gen_light_include.py
+ echo "==> Restarting lighttpd."
+ /sbin/sv hup /service/lighttpd
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ gen_light_include.py
+ echo
+ echo "==> Forcing a re-read of lighttpd's configuration file."
+ echo ""
+ /sbin/sv hup /service/lighttpd
+}
diff --git a/abs/core/mythtv/stable-30/mythweb/mythweb_gen_light.conf b/abs/core/mythtv/stable-30/mythweb/mythweb_gen_light.conf
new file mode 100644
index 0000000..ddf0d2f
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/mythweb_gen_light.conf
@@ -0,0 +1 @@
+include "/etc/lighttpd/mythweb.include"
diff --git a/abs/core/mythtv/stable-30/mythweb/video.css.patch b/abs/core/mythtv/stable-30/mythweb/video.css.patch
new file mode 100644
index 0000000..f49a3fd
--- /dev/null
+++ b/abs/core/mythtv/stable-30/mythweb/video.css.patch
@@ -0,0 +1,98 @@
+--- ./skins/default/video.css.orig 2018-05-22 21:45:30.395508513 +0000
++++ ./skins/default/video.css 2018-05-22 21:41:27.326893228 +0000
+@@ -0,0 +1,95 @@
++ .video {
++ position: relative;
++ padding: 1em;
++ float: left;
++ background-color: #003366;
++ margin-top: 1em;
++ margin-left: 1em;
++ width: 202px;
++ height: 168px;
++ border: 1px solid black;
++ }
++
++ .video .title {
++ font-weight: bold;
++ margin-bottom: .5em;
++ height: 2.5em;
++ overflow: hidden;
++ }
++
++ .video img {
++ float: left;
++ padding-right: 1em;
++ }
++
++ .video .command {
++ position: absolute;
++ bottom: 1em;
++ right: 1em;
++ }
++
++ #path {
++ position: relative;
++ padding: 1em;
++ float: left;
++ background-color: #102923;
++ margin-top: 1em;
++ margin-left: 1em;
++ border: 1px solid black;
++ min-width: 202px;
++ min-height: 168px;
++ }
++
++ #path .active {
++ color: yellow;
++ }
++
++ #window {
++ position: fixed;
++ left: 35%;
++ right: 35%;
++ width: 30%;
++ top: 35%;
++ background-color: green;
++ padding-top: 1em;
++ z-index: 10;
++ border: 2px solid gray;
++ }
++
++ #window_content a {
++ padding-right: 1em;
++ padding-left: 1em;
++ }
++
++ #window iframe {
++ width: 100%;
++ border: 0px;
++ height: 250px;
++ }
++
++ #window_title {
++ position: absolute;
++ top: 1px;
++ left: 1em;
++ font-weight: bold;
++ }
++
++ .popup {
++ width: 30%;
++ font-size: 9pt;
++ }
++
++ .popup dt {
++ clear: left;
++ float: left;
++ padding-top: 3px;
++ white-space: nowrap;
++ width: 6em;
++ font-weight: bold;
++ text-align: right;
++ }
++
++ .popup dd {
++ margin-left: 6.5em;
++ padding-top: 3px;
++ }
diff --git a/abs/core/nano/PKGBUILD b/abs/core/nano/PKGBUILD
index 7bebc6f..b7723d3 100644
--- a/abs/core/nano/PKGBUILD
+++ b/abs/core/nano/PKGBUILD
@@ -1,9 +1,8 @@
-# $Id$
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Judd <judd@archlinux.org>
pkgname=nano
-pkgver=2.9.8
+pkgver=3.2
pkgrel=1
pkgdesc="Pico editor clone with enhancements"
arch=('x86_64')
@@ -12,8 +11,8 @@ url="http://www.nano-editor.org"
groups=('base')
depends=('ncurses' 'file' 'sh')
backup=('etc/nanorc')
-source=(https://www.nano-editor.org/dist/v2.9/${pkgname}-${pkgver}.tar.xz{,.asc})
-sha256sums=('c2deac31ba4d3fd27a42fafcc47ccf499296cc69a422bbecab63f2933ea85488'
+source=(https://www.nano-editor.org/dist/v3/${pkgname}-${pkgver}.tar.xz{,.asc})
+sha256sums=('d12773af3589994b2e4982c5792b07c6240da5b86c5aef2103ab13b401fe6349'
'SKIP')
validpgpkeys=('8DA6FE7BFA7A418AB3CB2354BCB356DF91009FA7' # "Chris Allegretta <chrisa@asty.org>"
'A7F6A64A67DA09EF92782DD79DF4862AF1175C5B' # "Benno Schulenberg <bensberg@justemail.net>"
diff --git a/abs/core/nasm/PKGBUILD b/abs/core/nasm/PKGBUILD
index eff9c02..e9f285f 100644
--- a/abs/core/nasm/PKGBUILD
+++ b/abs/core/nasm/PKGBUILD
@@ -1,29 +1,30 @@
-# $Id$
-# Maintainer: Eric Bélanger <eric@archlinux.org>
+# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Eric Bélanger <eric@archlinux.org>
pkgname=nasm
-pkgver=2.11.08
+pkgver=2.14.02
pkgrel=1
-pkgdesc="An 80x86 assembler designed for portability and modularity"
-arch=('i686' 'x86_64')
-url="http://www.nasm.us"
+pkgdesc='80x86 assembler designed for portability and modularity'
+url='https://www.nasm.us'
+arch=('x86_64')
license=('BSD')
depends=('glibc')
-install=nasm.install
-source=(http://www.nasm.us/pub/nasm/releasebuilds/${pkgver}/${pkgname}-${pkgver}.tar.xz)
-sha1sums=('6908296ac437b3ade79fadfaad0efcfd99582f70')
+makedepends=('perl-font-ttf' 'perl-sort-versions' 'fontconfig' 'adobe-source-sans-pro-fonts'
+ 'ttf-liberation' 'ghostscript' 'xmlto' 'asciidoc')
+source=(https://www.nasm.us/pub/nasm/releasebuilds/${pkgver}/${pkgname}-${pkgver}.tar.xz)
+sha512sums=('c7a228095f37321d57f2813d04f58ee66949e8f81fc49ef6c4ecd391301e308217583ce1a265d4fe8c13d54b5b9c72aeb132caa3caee36e31b6555fbfff34c81')
build() {
cd ${pkgname}-${pkgver}
./configure --prefix=/usr
make
- make -C doc info
+ make -C doc
}
package() {
cd ${pkgname}-${pkgver}
- make INSTALLROOT="${pkgdir}" install install_rdf
- install -dm755 "${pkgdir}"/usr/share/info
- install -m644 doc/info/* "${pkgdir}"/usr/share/info/
- install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/nasm/LICENSE
+ make DESTDIR="${pkgdir}" install install_rdf
+ install -Dm 644 LICENSE -t "${pkgdir}"/usr/share/licenses/nasm
}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/core/nasm/nasm.install b/abs/core/nasm/nasm.install
deleted file mode 100644
index e4baa98..0000000
--- a/abs/core/nasm/nasm.install
+++ /dev/null
@@ -1,20 +0,0 @@
-infodir=usr/share/info
-filelist=(nasm.info)
-
-post_install() {
- [ -x usr/bin/install-info ] || return 0
- for file in ${filelist[@]}; do
- install-info $infodir/$file.gz $infodir/dir 2> /dev/null
- done
-}
-
-post_upgrade() {
- post_install $1
-}
-
-pre_remove() {
- [ -x usr/bin/install-info ] || return 0
- for file in ${filelist[@]}; do
- install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
- done
-}
diff --git a/abs/core/nvidia-304xx/PKGBUILD b/abs/core/nvidia-304xx/PKGBUILD
index f014b35..afbe48d 100644
--- a/abs/core/nvidia-304xx/PKGBUILD
+++ b/abs/core/nvidia-304xx/PKGBUILD
@@ -6,7 +6,7 @@ pkgbase=nvidia-304xx
pkgname=(nvidia-304xx nvidia-304xx-dkms)
pkgver=304.137
_extramodules=extramodules-4.9-ARCH
-pkgrel=12
+pkgrel=13
pkgdesc="NVIDIA drivers for linux, 304xx legacy branch"
arch=('x86_64')
url="http://www.nvidia.com/"
diff --git a/abs/core/nvidia-340xx-settings/PKGBUILD b/abs/core/nvidia-340xx-settings/PKGBUILD
new file mode 100644
index 0000000..ce1e91f
--- /dev/null
+++ b/abs/core/nvidia-340xx-settings/PKGBUILD
@@ -0,0 +1,62 @@
+# Maintainer: Sven-Hendrik Haase <svenstaro@gmail.com>
+
+pkgbase=nvidia-340xx-settings
+pkgname=('nvidia-340xx-settings' 'libxnvctrl-340xx')
+pkgver=340.107
+pkgrel=1
+pkgdesc='Tool for configuring the NVIDIA graphics driver, 340xx legacy branch'
+url='https://github.com/NVIDIA/nvidia-settings'
+arch=('x86_64')
+license=('GPL2')
+makedepends=('git' 'inetutils' 'gtk2' 'jansson' 'gtk3' 'libxv' 'libvdpau' 'nvidia-340xx-utils' 'libxext')
+options=('staticlibs')
+source=(nvidia-settings-${pkgver}.tar.gz::https://github.com/NVIDIA/nvidia-settings/archive/${pkgver}.tar.gz
+ libxnvctrl_so.patch)
+sha512sums=('5419aeac964345612d3933d2dd7249e8c18f9b1ce7fe8aa711d4ab54ba51505c3cf8caf24983fee7084ca8f2dc0be199236c99750038da12502bf91f83953899'
+ '4d39721610adc54d272b0bbb4e9cd5edd29c0c1250c2ccb6c19927703bb3bc95fd826ffb24f3134af3ba0428f6fb400afeb9e3e1cb9b33f1ce59ea64885e5ddf')
+
+prepare() {
+ export PREFIX=/usr
+ export NV_USE_BUNDLED_LIBJANSSON=0
+ cd nvidia-settings-${pkgver}
+ patch -p1 < "${srcdir}/libxnvctrl_so.patch"
+}
+
+build() {
+ cd nvidia-settings-${pkgver}
+ make
+ make -C src/libXNVCtrl
+}
+
+package_nvidia-340xx-settings() {
+ depends=('jansson' 'gtk3' 'libxv' 'libvdpau' 'nvidia-340xx-utils' 'libxnvctrl-340xx')
+ conflicts=('nvidia-settings')
+ provides=('nvidia-settings')
+
+ cd nvidia-settings-${pkgver}
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 doc/nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ install -D -m644 doc/nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png"
+ sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+}
+
+package_libxnvctrl-340xx() {
+ depends=('libxext')
+ conflicts=('libxnvctrl')
+ provides=('libxnvctrl')
+ pkgdesc='NVIDIA NV-CONTROL X extension, 340xx legacy branch'
+
+ cd nvidia-settings-${pkgver}
+ install -Dm 644 doc/{NV-CONTROL-API.txt,FRAMELOCK.txt} -t "${pkgdir}/usr/share/doc/${pkgname}"
+ install -Dm 644 samples/{Makefile,README,*.c,*.h,*.mk} -t "${pkgdir}/usr/share/doc/${pkgname}/samples"
+
+ cd src/libXNVCtrl
+ install -Dm 644 *.h -t "${pkgdir}/usr/include/NVCtrl"
+ install -Dm 644 libXNVCtrl.a -t "${pkgdir}/usr/lib"
+ install -Dm 755 libXNVCtrl.so.0.0.0 -t "${pkgdir}/usr/lib"
+ ln -s libXNVCtrl.so.0.0.0 "${pkgdir}/usr/lib/libXNVCtrl.so.0"
+ ln -s libXNVCtrl.so.0 "${pkgdir}/usr/lib/libXNVCtrl.so"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/core/nvidia-340xx-settings/libxnvctrl_so.patch b/abs/core/nvidia-340xx-settings/libxnvctrl_so.patch
new file mode 100644
index 0000000..b09ab01
--- /dev/null
+++ b/abs/core/nvidia-340xx-settings/libxnvctrl_so.patch
@@ -0,0 +1,56 @@
+diff -ru nvidia-settings-340.104/src/libXNVCtrl/Makefile nvidia-settings-340.104-patched/src/libXNVCtrl/Makefile
+--- nvidia-settings-340.104/src/libXNVCtrl/Makefile 2017-09-19 18:35:55.000000000 +0200
++++ nvidia-settings-340.104-patched/src/libXNVCtrl/Makefile 2018-06-09 08:12:48.643147441 +0200
+@@ -55,10 +55,17 @@
+ .PHONY: clean
+
+ all: $(LIBXNVCTRL)
++all: libXNVCtrl.so
+
+ $(LIBXNVCTRL) : $(OBJS)
+ $(AR) ru $@ $(OBJS)
+
++libXNVCtrl.so: $(OBJS)
++ $(RM) $@ $@.*
++ $(CC) -shared -Wl,-soname=$@.0 -o $@.0.0.0 $(LDFLAGS) $^ -lXext -lX11
++ ln -s $@.0.0.0 $@.0
++ ln -s $@.0 $@
++
+ # define the rule to build each object file
+ $(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,TARGET,$(src))))
+
+Only in nvidia-settings-340.104-patched/src/libXNVCtrl: _out
+diff -ru nvidia-settings-340.104/src/Makefile nvidia-settings-340.104-patched/src/Makefile
+--- nvidia-settings-340.104/src/Makefile 2017-09-19 18:35:55.000000000 +0200
++++ nvidia-settings-340.104-patched/src/Makefile 2018-06-09 08:16:48.837588597 +0200
+@@ -84,6 +84,8 @@
+ XNVCTRL_DIR ?= libXNVCtrl
+ XNVCTRL_MAKEFILE ?= Makefile
+ XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
++XNVCTRL_SHARED ?= $(XNVCTRL_DIR)/libXNVCtrl.so.0
++XNVCTRL_LIB ?= $(XNVCTRL_SHARED)
+ XCONFIG_PARSER_DIR ?= XF86Config-parser
+ COMMON_UTILS_DIR ?= common-utils
+ COMMON_UNIX_DIR ?= common-unix
+@@ -203,9 +205,9 @@
+ $(MKDIR) $(BINDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(BINDIR)/$(notdir $<)
+
+-$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE)
++$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_LIB)
+ $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) -o $@ $(OBJS) \
+- $(XNVCTRL_ARCHIVE) $(LIBS)
++ $(XNVCTRL_LIB) $(LIBS)
+ $(call quiet_cmd,STRIP_CMD) $@
+
+ # define the rule to build each object file
+@@ -215,7 +217,7 @@
+ $(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME)))
+
+ # define the rule to build $(XNVCTRL_ARCHIVE)
+-$(XNVCTRL_ARCHIVE): build-xnvctrl
++$(XNVCTRL_ARCHIVE) $(XNVCTRL_SHARED): build-xnvctrl
+
+ build-xnvctrl:
+ @$(MAKE) -C $(XNVCTRL_DIR) -f $(XNVCTRL_MAKEFILE)
+Only in nvidia-settings-340.104-patched/src: _out
diff --git a/abs/core/nvidia-340xx-utils/PKGBUILD b/abs/core/nvidia-340xx-utils/PKGBUILD
index 6cbc1aa..3795776 100644
--- a/abs/core/nvidia-340xx-utils/PKGBUILD
+++ b/abs/core/nvidia-340xx-utils/PKGBUILD
@@ -1,4 +1,3 @@
-# $Id$
# Maintainer: Giancarlo Razzolini <grazzolini@archlinux.org>
# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
# Contributor: Thomas Baechler <thomas@archlinux.org>
@@ -7,7 +6,7 @@
pkgbase=nvidia-340xx-utils
pkgname=('nvidia-340xx-utils' 'opencl-nvidia-340xx')
pkgver=340.107
-pkgrel=3
+pkgrel=4
arch=('x86_64')
url="http://www.nvidia.com/"
license=('custom')
@@ -112,12 +111,12 @@ package_nvidia-340xx-utils() {
install -D -m755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig"
install -D -m644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz"
- # nvidia-settings
- install -D -m755 nvidia-settings "${pkgdir}/usr/bin/nvidia-settings"
- install -D -m644 nvidia-settings.1.gz "${pkgdir}/usr/share/man/man1/nvidia-settings.1.gz"
- install -D -m644 nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
- install -D -m644 nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png"
- sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ # provided in nvidia-settings
+ #install -D -m755 nvidia-settings "${pkgdir}/usr/bin/nvidia-settings"
+ #install -D -m644 nvidia-settings.1.gz "${pkgdir}/usr/share/man/man1/nvidia-settings.1.gz"
+ #install -D -m644 nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ #install -D -m644 nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png"
+ #sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
# nvidia-bug-report
install -D -m755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh"
diff --git a/abs/core/nvidia-340xx-utils/__changelog b/abs/core/nvidia-340xx-utils/__changelog
new file mode 100644
index 0000000..a41f1ad
--- /dev/null
+++ b/abs/core/nvidia-340xx-utils/__changelog
@@ -0,0 +1 @@
+PKGBUILD: comment out nvidia-settings stuff as it is now in nvidia-340xx-settings
diff --git a/abs/core/nvidia-340xx/PKGBUILD b/abs/core/nvidia-340xx/PKGBUILD
index 7d64b15..a632933 100644
--- a/abs/core/nvidia-340xx/PKGBUILD
+++ b/abs/core/nvidia-340xx/PKGBUILD
@@ -1,4 +1,3 @@
-# $Id$
# Maintainer: Giancarlo Razzolini <grazzolini@archlinux.org>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
@@ -7,7 +6,7 @@ pkgbase=nvidia-340xx
pkgname=(nvidia-340xx nvidia-340xx-dkms)
pkgver=340.107
_extramodules=extramodules-4.9-ARCH
-pkgrel=5
+pkgrel=6
pkgdesc="NVIDIA drivers for linux, 340xx legacy branch"
arch=('x86_64')
url="http://www.nvidia.com/"
@@ -43,8 +42,8 @@ build() {
package_nvidia-340xx() {
pkgdesc="NVIDIA drivers for linux, 340xx legacy branch"
- depends=('linux>=4.9' 'linux<4.10' "nvidia-340xx-utils=${pkgver}" 'libgl')
install=nvidia-340xx.install
+ depends=('linux>=4.9' 'linux<4.10' "nvidia-340xx-utils=${pkgver}" 'libgl')
install -Dt "${pkgdir}/usr/lib/modules/${_extramodules}" -m644 \
"${srcdir}/${_pkg}/kernel"/{nvidia,uvm/nvidia-uvm}.ko
@@ -60,6 +59,7 @@ package_nvidia-340xx-dkms() {
depends=('dkms' "nvidia-340xx-utils=$pkgver" 'libgl')
optdepends=('linux-headers: Build the module for Arch kernel'
'linux-lts-headers: Build the module for LTS Arch kernel')
+ provides=("nvidia-340xx=$pkgver")
conflicts+=('nvidia-340xx')
cd ${_pkg}
diff --git a/abs/core/nvidia-390xx-settings/PKGBUILD b/abs/core/nvidia-390xx-settings/PKGBUILD
new file mode 100644
index 0000000..1d76904
--- /dev/null
+++ b/abs/core/nvidia-390xx-settings/PKGBUILD
@@ -0,0 +1,64 @@
+# Maintainer: Sven-Hendrik Haase <svenstaro@gmail.com>
+
+pkgbase=nvidia-390xx-settings
+pkgname=('nvidia-390xx-settings' 'libxnvctrl-390xx')
+pkgver=390.116
+pkgrel=1
+pkgdesc='Tool for configuring the NVIDIA graphics driver, 390xx legacy branch'
+url='https://github.com/NVIDIA/nvidia-settings'
+arch=('x86_64')
+license=('GPL2')
+makedepends=('git' 'inetutils' 'gtk2' 'jansson' 'gtk3' 'libxv' 'libvdpau' 'nvidia-390xx-utils' 'libxext')
+options=('staticlibs')
+source=(nvidia-settings-${pkgver}.tar.gz::https://github.com/NVIDIA/nvidia-settings/archive/${pkgver}.tar.gz
+ libxnvctrl_so.patch)
+sha512sums=('81d15c4e969b8d5cc02749e9fa32d6ab75f2bccfcfd1d2d74dca4954384df730e50f774c7df45ae915fc64bb7369f438fab2d4d695044e0ba1d6d5db44875751'
+ 'f69f5dc84fe624579a3c9ce877f4ae4e34c2184877576afbea07b8abdd7ff01e470517f2b77cd11a904518cbcb83fb388ca1d08888006f0ef2854723920c9cf8')
+
+prepare() {
+ export PREFIX=/usr
+ export NV_USE_BUNDLED_LIBJANSSON=0
+ cd nvidia-settings-${pkgver}
+ patch -p1 < "${srcdir}/libxnvctrl_so.patch"
+}
+
+build() {
+ cd nvidia-settings-${pkgver}
+ make
+ make -C src/libXNVCtrl
+}
+
+package_nvidia-390xx-settings() {
+ depends=('jansson' 'gtk3' 'libxv' 'libvdpau' 'nvidia-390xx-utils' 'libxnvctrl-390xx')
+ conflicts=('nvidia-settings')
+ provides=('nvidia-settings')
+
+ cd nvidia-settings-${pkgver}
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 doc/nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ install -D -m644 doc/nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png"
+ sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+
+ rm "$pkgdir/usr/lib/libnvidia-gtk2.so.$pkgver"
+}
+
+package_libxnvctrl-390xx() {
+ depends=('libxext')
+ conflicts=('libxnvctrl')
+ provides=('libxnvctrl')
+ pkgdesc='NVIDIA NV-CONTROL X extension, 390xx legacy branch'
+
+ cd nvidia-settings-${pkgver}
+ install -Dm 644 doc/{NV-CONTROL-API.txt,FRAMELOCK.txt} -t "${pkgdir}/usr/share/doc/${pkgname}"
+ install -Dm 644 samples/{Makefile,README,*.c,*.h,*.mk} -t "${pkgdir}/usr/share/doc/${pkgname}/samples"
+
+ cd src/libXNVCtrl
+ install -Dm 644 *.h -t "${pkgdir}/usr/include/NVCtrl"
+ install -Dm 644 libXNVCtrl.a -t "${pkgdir}/usr/lib"
+ install -Dm 755 libXNVCtrl.so.0.0.0 -t "${pkgdir}/usr/lib"
+ ln -s libXNVCtrl.so.0.0.0 "${pkgdir}/usr/lib/libXNVCtrl.so.0"
+ ln -s libXNVCtrl.so.0 "${pkgdir}/usr/lib/libXNVCtrl.so"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/nvidia-settings/libxnvctrl_so.patch b/abs/core/nvidia-390xx-settings/libxnvctrl_so.patch
index 724064e..724064e 100644
--- a/abs/extra/nvidia-settings/libxnvctrl_so.patch
+++ b/abs/core/nvidia-390xx-settings/libxnvctrl_so.patch
diff --git a/abs/core/nvidia-390xx-utils/PKGBUILD b/abs/core/nvidia-390xx-utils/PKGBUILD
new file mode 100644
index 0000000..3d413d1
--- /dev/null
+++ b/abs/core/nvidia-390xx-utils/PKGBUILD
@@ -0,0 +1,168 @@
+# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
+
+pkgbase=nvidia-390xx-utils
+pkgname=('nvidia-390xx-utils' 'opencl-nvidia-390xx')
+pkgver=390.116
+pkgrel=1
+arch=('x86_64')
+url="http://www.nvidia.com/"
+license=('custom')
+options=('!strip')
+source=('nvidia-drm-outputclass.conf'
+ 'nvidia-390xx-utils.sysusers'
+ "http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run")
+sha512sums=('c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48'
+ '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499'
+ '842e57b479d833a40fe1e8ecf72217c43d71a07e91cb4b6d14bd3b6326a0ef035e6423c15849ccc23ff82d2740ae8c21a9742502b958bd748736abac5e7d9f1e')
+
+_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32"
+
+create_links() {
+ # create soname links
+ find "$pkgdir" -type f -name '*.so*' ! -path '*xorg/*' -print0 | while read -d $'\0' _lib; do
+ _soname=$(dirname "${_lib}")/$(readelf -d "${_lib}" | grep -Po 'SONAME.*: \[\K[^]]*' || true)
+ _base=$(echo ${_soname} | sed -r 's/(.*).so.*/\1.so/')
+ [[ -e "${_soname}" ]] || ln -s $(basename "${_lib}") "${_soname}"
+ [[ -e "${_base}" ]] || ln -s $(basename "${_soname}") "${_base}"
+ done
+}
+
+prepare() {
+ sh "${_pkg}.run" --extract-only
+ cd "${_pkg}"
+ bsdtar -xf nvidia-persistenced-init.tar.bz2
+
+ sed -i 's/__NV_VK_ICD__/libGLX_nvidia.so.0/' nvidia_icd.json.template
+}
+
+package_opencl-nvidia-390xx() {
+ pkgdesc="OpenCL implemention for NVIDIA"
+ depends=('zlib')
+ optdepends=('opencl-headers: headers necessary for OpenCL development')
+ conflicts=('opencl-nvidia')
+ provides=('opencl-nvidia' 'opencl-driver')
+ cd "${_pkg}"
+
+ # OpenCL
+ install -D -m644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd"
+ install -D -m755 "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-compiler.so.${pkgver}"
+ install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opencl.so.${pkgver}"
+
+ create_links
+
+ mkdir -p "${pkgdir}/usr/share/licenses"
+ ln -s nvidia "${pkgdir}/usr/share/licenses/opencl-nvidia"
+}
+
+package_nvidia-390xx-utils() {
+ pkgdesc="NVIDIA drivers utilities"
+ depends=('xorg-server' 'libglvnd' 'egl-wayland')
+ optdepends=('nvidia-390xx-settings: configuration tool'
+ 'xorg-server-devel: nvidia-xconfig'
+ 'opencl-nvidia-390xx: OpenCL support')
+ conflicts=('nvidia-390xx-libgl' 'nvidia-utils' 'nvidia-libgl')
+ provides=('vulkan-driver' 'opengl-driver' 'nvidia-utils' 'nvidia-390xx-libgl' 'nvidia-libgl')
+ replaces=('nvidia-390xx-libgl')
+ install="${pkgname}.install"
+
+ cd "${_pkg}"
+
+ # X driver
+ install -D -m755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so"
+
+ # GLX extension module for X
+ install -D -m755 "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.${pkgver}"
+ ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.1" # X doesn't find glx otherwise
+ ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so" # X doesn't find glx otherwise
+
+ install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_nvidia.so.${pkgver}"
+ # now in mesa driver
+ #ln -s "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_indirect.so.0"
+
+ # OpenGL libraries
+ install -D -m755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libEGL_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv1_CM_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv1_CM_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv2_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv2_nvidia.so.${pkgver}"
+ install -D -m644 "10_nvidia.json" "${pkgdir}/usr/share/glvnd/egl_vendor.d/10_nvidia.json"
+
+ # OpenGL core library
+ install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glcore.so.${pkgver}"
+ install -D -m755 "libnvidia-eglcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-eglcore.so.${pkgver}"
+ install -D -m755 "libnvidia-glsi.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glsi.so.${pkgver}"
+
+ # misc
+ install -D -m755 "libnvidia-ifr.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ifr.so.${pkgver}"
+ install -D -m755 "libnvidia-fbc.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fbc.so.${pkgver}"
+ install -D -m755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-encode.so.${pkgver}"
+ install -D -m755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}"
+ install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}"
+
+ # Vulkan ICD
+ install -D -m644 "nvidia_icd.json.template" "${pkgdir}/usr/share/vulkan/icd.d/nvidia_icd.json"
+
+ # VDPAU
+ install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}"
+
+ # nvidia-tls library
+ install -D -m755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}"
+ install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/tls/libnvidia-tls.so.${pkgver}"
+
+ # CUDA
+ install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}"
+ install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib/libnvcuvid.so.${pkgver}"
+
+ # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
+ install -D -m755 "libnvidia-ptxjitcompiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ptxjitcompiler.so.${pkgver}"
+
+ # Fat (multiarchitecture) binary loader
+ install -D -m755 "libnvidia-fatbinaryloader.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fatbinaryloader.so.${pkgver}"
+
+ # DEBUG
+ install -D -m755 nvidia-debugdump "${pkgdir}/usr/bin/nvidia-debugdump"
+
+ # nvidia-xconfig
+ install -D -m755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig"
+ install -D -m644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz"
+
+ # nvidia-bug-report
+ install -D -m755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh"
+
+ # nvidia-smi
+ install -D -m755 nvidia-smi "${pkgdir}/usr/bin/nvidia-smi"
+ install -D -m644 nvidia-smi.1.gz "${pkgdir}/usr/share/man/man1/nvidia-smi.1.gz"
+
+ # nvidia-cuda-mps
+ install -D -m755 nvidia-cuda-mps-server "${pkgdir}/usr/bin/nvidia-cuda-mps-server"
+ install -D -m755 nvidia-cuda-mps-control "${pkgdir}/usr/bin/nvidia-cuda-mps-control"
+ install -D -m644 nvidia-cuda-mps-control.1.gz "${pkgdir}/usr/share/man/man1/nvidia-cuda-mps-control.1.gz"
+
+ # nvidia-modprobe
+ # This should be removed if nvidia fixed their uvm module!
+ install -D -m4755 nvidia-modprobe "${pkgdir}/usr/bin/nvidia-modprobe"
+ install -D -m644 nvidia-modprobe.1.gz "${pkgdir}/usr/share/man/man1/nvidia-modprobe.1.gz"
+
+ # nvidia-persistenced
+ install -D -m755 nvidia-persistenced "${pkgdir}/usr/bin/nvidia-persistenced"
+ install -D -m644 nvidia-persistenced.1.gz "${pkgdir}/usr/share/man/man1/nvidia-persistenced.1.gz"
+ install -D -m644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
+ sed -i 's/__USER__/nvidia-persistenced/' "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
+
+ # application profiles
+ install -D -m644 nvidia-application-profiles-${pkgver}-rc "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-rc"
+ install -D -m644 nvidia-application-profiles-${pkgver}-key-documentation "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-key-documentation"
+
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/nvidia-utils/LICENSE"
+ install -D -m644 README.txt "${pkgdir}/usr/share/doc/nvidia/README"
+ install -D -m644 NVIDIA_Changelog "${pkgdir}/usr/share/doc/nvidia/NVIDIA_Changelog"
+ cp -r html "${pkgdir}/usr/share/doc/nvidia/"
+ ln -s nvidia "${pkgdir}/usr/share/doc/nvidia-utils"
+
+ # distro specific files must be installed in /usr/share/X11/xorg.conf.d
+ install -D -m644 "${srcdir}/nvidia-drm-outputclass.conf" "${pkgdir}/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf"
+
+ install -Dm644 "${srcdir}/nvidia-390xx-utils.sysusers" "${pkgdir}/usr/lib/sysusers.d/$pkgname.conf"
+
+ create_links
+}
diff --git a/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.install b/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.install
new file mode 100644
index 0000000..47847c7
--- /dev/null
+++ b/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.install
@@ -0,0 +1,7 @@
+post_upgrade() {
+ echo "If you run into trouble with CUDA not being available, run nvidia-modprobe first."
+}
+
+post_install() {
+ post_upgrade
+}
diff --git a/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.sysusers b/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.sysusers
new file mode 100644
index 0000000..71c0608
--- /dev/null
+++ b/abs/core/nvidia-390xx-utils/nvidia-390xx-utils.sysusers
@@ -0,0 +1 @@
+u nvidia-persistenced 143 'NVIDIA Persistence Daemon'
diff --git a/abs/core/nvidia-390xx-utils/nvidia-drm-outputclass.conf b/abs/core/nvidia-390xx-utils/nvidia-drm-outputclass.conf
new file mode 100644
index 0000000..dd2936c
--- /dev/null
+++ b/abs/core/nvidia-390xx-utils/nvidia-drm-outputclass.conf
@@ -0,0 +1,15 @@
+Section "OutputClass"
+ Identifier "intel"
+ MatchDriver "i915"
+ Driver "modesetting"
+EndSection
+
+Section "OutputClass"
+ Identifier "nvidia"
+ MatchDriver "nvidia-drm"
+ Driver "nvidia"
+ Option "AllowEmptyInitialConfiguration"
+ Option "PrimaryGPU" "yes"
+ ModulePath "/usr/lib/nvidia/xorg"
+ ModulePath "/usr/lib/xorg/modules"
+EndSection
diff --git a/abs/core/nvidia-390xx/PKGBUILD b/abs/core/nvidia-390xx/PKGBUILD
new file mode 100644
index 0000000..644790d
--- /dev/null
+++ b/abs/core/nvidia-390xx/PKGBUILD
@@ -0,0 +1,87 @@
+# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Maintainer: Felix Yan <felixonmars@archlinux.org>
+# Contributor: Thomas Baechler <thomas@archlinux.org>
+
+pkgbase=nvidia-390xx
+pkgname=(nvidia-390xx nvidia-390xx-dkms)
+pkgver=390.116
+_extramodules=extramodules-4.9-ARCH
+pkgrel=3
+pkgdesc="NVIDIA drivers for linux, 390xx legacy branch"
+arch=('x86_64')
+url="http://www.nvidia.com/"
+makedepends=("nvidia-390xx-utils=${pkgver}" 'libglvnd' 'linux' 'linux-headers>=4.9' 'linux-headers<4.10')
+conflicts=('nvidia')
+license=('custom')
+options=('!strip')
+_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32"
+source=("http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run"
+ kernel-4.16.patch)
+sha256sums=('de85a2eea39ca16e25645b345259b01fbe858b833286b7e6785afa273009ef6f'
+ '622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385')
+
+prepare() {
+ sh "${_pkg}.run" --extract-only
+ cd "${_pkg}"
+
+ # Restore phys_to_dma support (still needed for 396.18)
+ # https://bugs.archlinux.org/task/58074
+ patch -Np1 -i ../kernel-4.16.patch
+
+ cp -a kernel kernel-dkms
+ cd kernel-dkms
+ sed -i "s/__VERSION_STRING/${pkgver}/" dkms.conf
+ sed -i 's/__JOBS/`nproc`/' dkms.conf
+ sed -i 's/__DKMS_MODULES//' dkms.conf
+ sed -i '$iBUILT_MODULE_NAME[0]="nvidia"\
+DEST_MODULE_LOCATION[0]="/kernel/drivers/video"\
+BUILT_MODULE_NAME[1]="nvidia-uvm"\
+DEST_MODULE_LOCATION[1]="/kernel/drivers/video"\
+BUILT_MODULE_NAME[2]="nvidia-modeset"\
+DEST_MODULE_LOCATION[2]="/kernel/drivers/video"\
+BUILT_MODULE_NAME[3]="nvidia-drm"\
+DEST_MODULE_LOCATION[3]="/kernel/drivers/video"' dkms.conf
+
+ # Gift for linux-rt guys
+ sed -i 's/NV_EXCLUDE_BUILD_MODULES/IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES/' dkms.conf
+}
+
+build() {
+ _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"
+ cd "${_pkg}"/kernel
+ make SYSSRC=/usr/lib/modules/"${_kernver}/build" module
+}
+
+package_nvidia-390xx() {
+ pkgdesc="NVIDIA drivers for linux, 390xx legacy branch"
+ depends=('linux>=4.9' 'linux<4.10' "nvidia-390xx-utils=${pkgver}" 'libglvnd')
+
+ install -Dt "${pkgdir}/usr/lib/modules/${_extramodules}" -m644 \
+ "${srcdir}/${_pkg}/kernel"/nvidia{,-modeset,-drm,-uvm}.ko
+
+ find "${pkgdir}" -name '*.ko' -exec gzip -n {} +
+
+ echo "blacklist nouveau" |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf"
+
+ install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 "${srcdir}/${_pkg}/LICENSE"
+}
+
+package_nvidia-390xx-dkms() {
+ pkgdesc="NVIDIA driver sources for linux, 390xx legacy branch"
+ depends=('dkms' "nvidia-390xx-utils=$pkgver" 'libglvnd')
+ optdepends=('linux-headers: Build the module for Arch kernel'
+ 'linux-lts-headers: Build the module for LTS Arch kernel')
+ provides=("nvidia-390xx=$pkgver")
+ conflicts+=('nvidia-390xx')
+
+ cd ${_pkg}
+
+ install -dm 755 "${pkgdir}"/usr/src
+ cp -dr --no-preserve='ownership' kernel-dkms "${pkgdir}/usr/src/nvidia-${pkgver}"
+
+ echo "blacklist nouveau" |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf"
+
+ install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 "${srcdir}/${_pkg}/LICENSE"
+}
diff --git a/abs/core/nvidia-390xx/kernel-4.16.patch b/abs/core/nvidia-390xx/kernel-4.16.patch
new file mode 100644
index 0000000..6717281
--- /dev/null
+++ b/abs/core/nvidia-390xx/kernel-4.16.patch
@@ -0,0 +1,33 @@
+diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h
+index 10fc418..22ef968 100644
+--- a/kernel/common/inc/nv-linux.h
++++ b/kernel/common/inc/nv-linux.h
+@@ -175,7 +175,11 @@ static inline uid_t __kuid_val(kuid_t uid)
+
+ #if defined(NV_VM_INSERT_PAGE_PRESENT)
+ #include <linux/pagemap.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
+ #include <linux/dma-mapping.h>
++#else
++#include <linux/dma-direct.h>
++#endif
+ #endif
+
+ #if defined(CONFIG_SWIOTLB) && defined(NVCPU_AARCH64)
+diff --git a/kernel/conftest.sh b/kernel/conftest.sh
+index b23dbb4..42dc576 100755
+--- a/kernel/conftest.sh
++++ b/kernel/conftest.sh
+@@ -1906,7 +1906,12 @@ compile_test() {
+ # Determine if the phys_to_dma function is present.
+ #
+ CODE="
++ #include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
+ #include <linux/dma-mapping.h>
++#else
++ #include <linux/dma-direct.h>
++#endif
+ void conftest_phys_to_dma(void) {
+ phys_to_dma();
+ }"
diff --git a/abs/extra/nvidia-settings/PKGBUILD b/abs/core/nvidia-settings/PKGBUILD
index a9f8744..843ce14 100644
--- a/abs/extra/nvidia-settings/PKGBUILD
+++ b/abs/core/nvidia-settings/PKGBUILD
@@ -1,9 +1,10 @@
+# Maintainer: Sven-Hendrik Haase <svenstaro@gmail.com>
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
pkgbase=nvidia-settings
pkgname=('nvidia-settings' 'libxnvctrl')
-pkgver=390.48
+pkgver=415.27
pkgrel=1
pkgdesc='Tool for configuring the NVIDIA graphics driver'
url='https://github.com/NVIDIA/nvidia-settings'
@@ -13,7 +14,7 @@ makedepends=('git' 'inetutils' 'gtk2' 'jansson' 'gtk3' 'libxv' 'libvdpau' 'nvidi
options=('staticlibs')
source=(${pkgbase}-${pkgver}.tar.gz::https://github.com/NVIDIA/nvidia-settings/archive/${pkgver}.tar.gz
libxnvctrl_so.patch)
-sha512sums=('5f8a6403edf8636cfb2aec8f01fb160030a2538140fe3d10a71863fd1f793eea3f8a6f1bc55baa7dff047bd1bef9c3bd579cf818af38b535fa172b3aaf122e55'
+sha512sums=('fdfba4612de72c6ada40191c76216d2fa1f2878b095d470852b1ca36b9ecf1d05e1a783e97ab9e5561932ed7b5753744b4915d544adba653da310ffac7147c59'
'f69f5dc84fe624579a3c9ce877f4ae4e34c2184877576afbea07b8abdd7ff01e470517f2b77cd11a904518cbcb83fb388ca1d08888006f0ef2854723920c9cf8')
prepare() {
diff --git a/abs/core/nvidia-settings/libxnvctrl_so.patch b/abs/core/nvidia-settings/libxnvctrl_so.patch
new file mode 100644
index 0000000..724064e
--- /dev/null
+++ b/abs/core/nvidia-settings/libxnvctrl_so.patch
@@ -0,0 +1,67 @@
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -106,6 +106,8 @@
+ XNVCTRL_DIR ?= libXNVCtrl
+ XNVCTRL_MAKEFILE ?= Makefile
+ XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
++XNVCTRL_SHARED ?= $(XNVCTRL_DIR)/libXNVCtrl.so.0
++XNVCTRL_LIB ?= $(XNVCTRL_SHARED)
+ XCONFIG_PARSER_DIR ?= XF86Config-parser
+ COMMON_UTILS_DIR ?= common-utils
+ COMMON_UNIX_DIR ?= common-unix
+@@ -280,15 +282,18 @@
+ $(MKDIR) $(BINDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(BINDIR)/$(notdir $<)
+
++$(XNVCTRL_ARCHIVE) $(XNVCTRL_SHARED):
++ $(MAKE) -C $(XNVCTRL_DIR)
++
+ $(eval $(call DEBUG_INFO_RULES, $(NVIDIA_SETTINGS)))
+-$(NVIDIA_SETTINGS).unstripped: $(OBJS) $(XNVCTRL_ARCHIVE)
++$(NVIDIA_SETTINGS).unstripped: $(OBJS) $(XNVCTRL_LIB)
+ $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) \
+- -rdynamic -o $@ $(OBJS) $(XNVCTRL_ARCHIVE) $(LIBS)
++ -rdynamic -o $@ $(OBJS) $(XNVCTRL_LIB) $(LIBS)
+
+ $(eval $(call DEBUG_INFO_RULES, $(GTK2LIB)))
+ $(GTK2LIB).unstripped: $(GTK2_OBJS) $(XCP_OBJS) $(IMAGE_OBJS) $(VERSION_MK)
+ $(call quiet_cmd,LINK) -shared $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) \
+- $(XNVCTRL_ARCHIVE) $(LIBS) $(GTK2_LIBS) \
++ $(XNVCTRL_LIB) $(LIBS) $(GTK2_LIBS) \
+ -Wl,--unresolved-symbols=ignore-all -o $@ \
+ -Wl,-soname -Wl,$(GTK2LIB_SONAME) \
+ $(GTK2_OBJS) $(XCP_OBJS)
+@@ -297,7 +302,7 @@
+ $(eval $(call DEBUG_INFO_RULES, $(GTK3LIB)))
+ $(GTK3LIB).unstripped: $(GTK3_OBJS) $(XCP_OBJS) $(VERSION_MK)
+ $(call quiet_cmd,LINK) -shared $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) \
+- $(XNVCTRL_ARCHIVE) $(LIBS) $(GTK3_LIBS) \
++ $(XNVCTRL_LIB) $(LIBS) $(GTK3_LIBS) \
+ -Wl,--unresolved-symbols=ignore-all -o $@ \
+ -Wl,-soname -Wl,$(GTK3LIB_SONAME) \
+ $(GTK3_OBJS) $(XCP_OBJS)
+--- a/src/libXNVCtrl/Makefile
++++ b/src/libXNVCtrl/Makefile
+@@ -55,10 +55,17 @@
+ .PHONY: clean
+
+ all: $(LIBXNVCTRL)
++all: libXNVCtrl.so
+
+ $(LIBXNVCTRL) : $(OBJS)
+ $(AR) ru $@ $(OBJS)
+
++libXNVCtrl.so: $(OBJS)
++ $(RM) $@ $@.*
++ $(CC) -shared -Wl,-soname=$@.0 -o $@.0.0.0 $(LDFLAGS) $^ -lXext -lX11
++ ln -s $@.0.0.0 $@.0
++ ln -s $@.0 $@
++
+ # define the rule to build each object file
+ $(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,TARGET,$(src))))
+
+@@ -68,3 +75,4 @@
+ clean:
+ rm -rf $(LIBXNVCTRL) *~ $(STAMP_C) \
+ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d
++ rm -f libXNVCtrl.so libXNVCtrl.so.*
diff --git a/abs/core/nvidia-utils/PKGBUILD b/abs/core/nvidia-utils/PKGBUILD
index cb4a5c9..c379e48 100644
--- a/abs/core/nvidia-utils/PKGBUILD
+++ b/abs/core/nvidia-utils/PKGBUILD
@@ -1,24 +1,23 @@
-# $Id$
# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
pkgbase=nvidia-utils
pkgname=('nvidia-utils' 'opencl-nvidia')
-pkgver=390.67
+pkgver=415.27
pkgrel=1
arch=('x86_64')
url="http://www.nvidia.com/"
license=('custom')
options=('!strip')
+_pkg="NVIDIA-Linux-x86_64-${pkgver}"
source=('nvidia-drm-outputclass.conf'
'nvidia-utils.sysusers'
- "http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run")
+ "https://download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run")
sha512sums=('c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48'
'4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499'
- 'b0cf1678fa508a584836befdb8db83147e8b94cd25dc0012f589850512c2d69f94ae4bfce6cfa3e16945939747239e3ac762ac1bd5472f8a3052c1314558eb13')
+ '5919333136042a227ff36c850d0c57898fb428a77d88633d205a269db4b844356a87f5b1e5c3042f40feaf083d4f82d32df5366820375b601f9d69d98cada0b6')
-_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32"
create_links() {
# create soname links
@@ -58,7 +57,7 @@ package_opencl-nvidia() {
package_nvidia-utils() {
pkgdesc="NVIDIA drivers utilities"
- depends=('xorg-server' 'libglvnd')
+ depends=('xorg-server' 'libglvnd' 'egl-wayland')
optdepends=('nvidia-settings: configuration tool'
'xorg-server-devel: nvidia-xconfig'
'opencl-nvidia: OpenCL support')
@@ -73,18 +72,15 @@ package_nvidia-utils() {
install -D -m755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so"
# GLX extension module for X
- install -D -m755 "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.${pkgver}"
- ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.1" # X doesn't find glx otherwise
- ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so" # X doesn't find glx otherwise
+ install -D -m755 "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.${pkgver}"
+ # Ensure that X finds glx
+ ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.1"
+ ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so"
- install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_nvidia.so.${pkgver}"
- # now in mesa driver
- #ln -s "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_indirect.so.0"
+ # X wrapped software rendering
+ install -D -m755 "libnvidia-wfb.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-wfb.so.${pkgver}"
- # Wayland stuff
- install -D -m755 "libnvidia-egl-wayland.so.1.0.2" "${pkgdir}/usr/lib/libnvidia-egl-wayland.so.1.0.2"
- ln -s "libnvidia-egl-wayland.so.1.0.2" "${pkgdir}/usr/lib/libnvidia-egl-wayland.so.1"
- install -D -m644 "10_nvidia_wayland.json" "${pkgdir}/usr/share/egl/egl_external_platform.d/10_nvidia_wayland.json"
+ install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_nvidia.so.${pkgver}"
# OpenGL libraries
install -D -m755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libEGL_nvidia.so.${pkgver}"
@@ -103,6 +99,7 @@ package_nvidia-utils() {
install -D -m755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-encode.so.${pkgver}"
install -D -m755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}"
install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}"
+ install -D -m755 "libnvidia-glvkspirv.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glvkspirv.so.${pkgver}"
# Vulkan ICD
install -D -m644 "nvidia_icd.json.template" "${pkgdir}/usr/share/vulkan/icd.d/nvidia_icd.json"
@@ -112,7 +109,6 @@ package_nvidia-utils() {
# nvidia-tls library
install -D -m755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}"
- install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/tls/libnvidia-tls.so.${pkgver}"
# CUDA
install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}"
@@ -124,6 +120,11 @@ package_nvidia-utils() {
# Fat (multiarchitecture) binary loader
install -D -m755 "libnvidia-fatbinaryloader.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fatbinaryloader.so.${pkgver}"
+ # raytracing
+ install -D -m755 "libnvoptix.so.${pkgver}" "${pkgdir}/usr/lib/libnvoptix.so.${pkgver}"
+ install -D -m755 "libnvidia-rtcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-rtcore.so.${pkgver}"
+ install -D -m755 "libnvidia-cbl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cbl.so.${pkgver}"
+
# DEBUG
install -D -m755 nvidia-debugdump "${pkgdir}/usr/bin/nvidia-debugdump"
diff --git a/abs/core/nvidia/PKGBUILD b/abs/core/nvidia/PKGBUILD
index c545054..cbf0f4c 100644
--- a/abs/core/nvidia/PKGBUILD
+++ b/abs/core/nvidia/PKGBUILD
@@ -1,25 +1,23 @@
-# $Id$
# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
pkgbase=nvidia
pkgname=(nvidia nvidia-dkms)
-pkgver=390.67
+pkgver=415.27
_extramodules=extramodules-4.9-ARCH
-pkgrel=1
+pkgrel=8
pkgdesc="NVIDIA drivers for linux"
arch=('x86_64')
url="http://www.nvidia.com/"
-makedepends=('nvidia-libgl' "nvidia-utils=${pkgver}" 'linux' 'linux-headers>=4.9' 'linux-headers<4.10')
+makedepends=("nvidia-utils=${pkgver}" 'libglvnd' 'linux' 'linux-headers>=4.9' 'linux-headers<4.10')
license=('custom')
options=('!strip')
-source=("http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run"
+_pkg="NVIDIA-Linux-x86_64-${pkgver}"
+source=("http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run"
kernel-4.16.patch)
-sha256sums=('4d9d4a636d568a93412cd9a2db08c594adef20861707dfdfbd6ae15db3292b26'
- '622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385')
-
-_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32"
+sha512sums=('5919333136042a227ff36c850d0c57898fb428a77d88633d205a269db4b844356a87f5b1e5c3042f40feaf083d4f82d32df5366820375b601f9d69d98cada0b6'
+ 'ad1185d998adbf89abf7aea300e5b3bbabe2296016f42592fbc232a6c3983f233df1103d37f35a041f12cc1c722d3edce813a4a1b215784a49c7f0e3e652b5af')
prepare() {
sh "${_pkg}.run" --extract-only
@@ -55,8 +53,8 @@ build() {
package_nvidia() {
pkgdesc="NVIDIA drivers for linux"
- depends=('linux>=4.9' 'linux<4.10' "nvidia-utils=${pkgver}" 'libgl')
install=nvidia.install
+ depends=('linux>=4.9' 'linux<4.10' "nvidia-utils=${pkgver}" 'libglvnd')
install -Dt "${pkgdir}/usr/lib/modules/${_extramodules}" -m644 \
"${srcdir}/${_pkg}/kernel"/nvidia{,-modeset,-drm,-uvm}.ko
@@ -71,9 +69,10 @@ package_nvidia() {
package_nvidia-dkms() {
pkgdesc="NVIDIA driver sources for linux"
- depends=('dkms' "nvidia-utils=$pkgver" 'libgl')
+ depends=('dkms' "nvidia-utils=$pkgver" 'libglvnd')
optdepends=('linux-headers: Build the module for Arch kernel'
'linux-lts-headers: Build the module for LTS Arch kernel')
+ provides=("nvidia=$pkgver")
conflicts+=('nvidia')
cd ${_pkg}
diff --git a/abs/core/openssl-1.0/PKGBUILD b/abs/core/openssl-1.0/PKGBUILD
index 4e6f2ea..dcdb802 100644
--- a/abs/core/openssl-1.0/PKGBUILD
+++ b/abs/core/openssl-1.0/PKGBUILD
@@ -1,8 +1,7 @@
-# $Id: PKGBUILD 287592 2017-01-28 07:20:49Z pierre $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgname=openssl-1.0
-_ver=1.0.2n
+_ver=1.0.2r
# use a pacman compatible version scheme
pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
#pkgver=$_ver
@@ -19,7 +18,7 @@ source=("https://www.openssl.org/source/openssl-${_ver}.tar.gz"
'no-rpath.patch'
'ssl3-test-failure.patch'
'openssl-1.0-versioned-symbols.patch')
-sha256sums=('370babb75f278c39e0c50e8c4e7493bc0f18db6867478341a832a982fd15a8fe'
+sha256sums=('ae51d08bba8a83958e894946f15303ff894d75c2b8bbd44a852b64e3fe11d0d6'
'SKIP'
'754d6107a306311e15a1db6a1cc031b81691c8b9865e8809ac60ca6f184c957c'
'c54ae87c602eaa1530a336ab7c6e22e12898e1941012349c153e52553df64a13'
diff --git a/abs/core/openssl/PKGBUILD b/abs/core/openssl/PKGBUILD
index caeb0e2..3868826 100644
--- a/abs/core/openssl/PKGBUILD
+++ b/abs/core/openssl/PKGBUILD
@@ -1,11 +1,9 @@
-# $Id$
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgname=openssl
-_ver=1.1.0g
+_ver=1.1.1a
# use a pacman compatible version scheme
pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
-#pkgver=$_ver
pkgrel=1
pkgdesc='The Open Source toolkit for Secure Sockets Layer and Transport Layer Security'
arch=('x86_64')
@@ -14,12 +12,11 @@ license=('custom:BSD')
depends=('perl')
optdepends=('ca-certificates')
backup=('etc/ssl/openssl.cnf')
-source=("https://www.openssl.org/source/${pkgname}-${_ver}.tar.gz"
- "https://www.openssl.org/source/${pkgname}-${_ver}.tar.gz.asc"
+source=("https://www.openssl.org/source/${pkgname}-${_ver}.tar.gz"{,.asc}
'ca-dir.patch')
-sha256sums=('de4d501267da39310905cb6dc8c6121f7a2cad45a7707f76df828fe1b85073af'
+sha256sums=('fc20130f8b7cbd2fb918b2f14e2f429e109c31ddd0fb38fc5d71d9ffed3f9f41'
'SKIP'
- '90c7411fed0157116f2df8f4be755aaf5a26e8484351b4e6a79492805d5f2790')
+ '0938c8d68110768db4f350a7ec641070686904f2fe7ba630ac94399d7dc8cc5e')
validpgpkeys=('8657ABB260F056B1E5190839D9C4D26D0E604491')
prepare() {
@@ -32,18 +29,9 @@ prepare() {
build() {
cd "$srcdir/$pkgname-$_ver"
- if [ "${CARCH}" == 'x86_64' ]; then
- openssltarget='linux-x86_64'
- optflags='enable-ec_nistp_64_gcc_128'
- elif [ "${CARCH}" == 'i686' ]; then
- openssltarget='linux-elf'
- optflags=''
- fi
-
# mark stack as non-executable: http://bugs.archlinux.org/task/12434
./Configure --prefix=/usr --openssldir=/etc/ssl --libdir=lib \
- shared no-ssl3-method ${optflags} \
- "${openssltarget}" \
+ shared no-ssl3-method enable-ec_nistp_64_gcc_128 linux-x86_64 \
"-Wa,--noexecstack ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}"
make depend
diff --git a/abs/core/openssl/ca-dir.patch b/abs/core/openssl/ca-dir.patch
index 1daba84..a140243 100644
--- a/abs/core/openssl/ca-dir.patch
+++ b/abs/core/openssl/ca-dir.patch
@@ -1,5 +1,5 @@
---- apps/CA.pl.in 2016-09-26 11:46:04.000000000 +0200
-+++ apps/CA.pl.in 2016-11-01 16:02:16.709616823 +0100
+--- apps/CA.pl.in 2018-09-11 14:48:19.000000000 +0200
++++ apps/CA.pl.in 2018-09-11 16:16:32.125629435 +0200
@@ -33,7 +33,7 @@
my $PKCS12 = "$openssl pkcs12";
@@ -9,9 +9,9 @@
my $CAKEY = "cakey.pem";
my $CAREQ = "careq.pem";
my $CACERT = "cacert.pem";
---- apps/openssl.cnf 2016-09-26 11:46:04.000000000 +0200
-+++ apps/openssl.cnf 2016-11-01 16:02:48.378503427 +0100
-@@ -39,7 +39,7 @@
+--- apps/openssl.cnf 2018-09-11 14:48:20.000000000 +0200
++++ apps/openssl.cnf 2018-09-11 16:16:32.125629435 +0200
+@@ -43,7 +43,7 @@
####################################################################
[ CA_default ]
@@ -20,7 +20,7 @@
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
-@@ -323,7 +323,7 @@
+@@ -327,7 +327,7 @@
[ tsa_config1 ]
# These are used by the TSA reply generation only.
diff --git a/abs/core/pango/PKGBUILD b/abs/core/pango/PKGBUILD
index ab1f03c..39a38a0 100644
--- a/abs/core/pango/PKGBUILD
+++ b/abs/core/pango/PKGBUILD
@@ -1,40 +1,39 @@
-# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=pango
-pkgver=1.38.1
+pkgver=1.42.4
pkgrel=1
+epoch=1
pkgdesc="A library for layout and rendering of text"
-arch=('i686' 'x86_64')
-license=('LGPL')
-depends=('libthai' 'cairo' 'libxft' 'harfbuzz')
-makedepends=('harfbuzz' 'fontconfig' 'cairo' 'libxft' 'libthai' 'gobject-introspection' 'help2man')
-checkdepends=('ttf-dejavu')
-install=pango.install
-source=(http://download.gnome.org/sources/${pkgname}/${pkgver:0:4}/${pkgname}-${pkgver}.tar.xz)
-url="http://www.pango.org/"
-sha256sums=('1320569f6c6d75d6b66172b2d28e59c56ee864ee9df202b76799c4506a214eb7')
+url="https://www.pango.org/"
+arch=(x86_64)
+license=(LGPL)
+depends=(libthai cairo libxft harfbuzz fribidi)
+makedepends=(gobject-introspection help2man gtk-doc git meson)
+checkdepends=(ttf-dejavu cantarell-fonts)
+_commit=a6a89818246b0b14c0fe3d00d6120929fc0a11d9 # tags/1.42.4^0
+source=("git+https://gitlab.gnome.org/GNOME/pango.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
prepare() {
- cd ${pkgname}-${pkgver}
+ cd $pkgname
}
build() {
- cd ${pkgname}-${pkgver}
-
- rm -f pango-view/pango-view.1.in
-
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --with-included-modules=basic-fc
- make
+ arch-meson $pkgname build -D enable_docs=true
+ ninja -C build
}
check() {
- cd ${pkgname}-${pkgver}
- make -k check || :
+ meson test -C build
}
package() {
- cd ${pkgname}-${pkgver}
- make -j1 DESTDIR="${pkgdir}" install
+ DESTDIR="$pkgdir" meson install -C build
+ rm -r "$pkgdir"/usr/{lib,share}/installed-tests
}
diff --git a/abs/core/pango/pango.install b/abs/core/pango/pango.install
deleted file mode 100644
index 68f7fcd..0000000
--- a/abs/core/pango/pango.install
+++ /dev/null
@@ -1,8 +0,0 @@
-post_upgrade() {
- if [ -f usr/etc/pango/pango.modules ]; then
- rm usr/etc/pango/pango.modules
- fi
- if [ -f etc/pango/pango.modules ]; then
- rm etc/pango/pango.modules
- fi
-}
diff --git a/abs/core/perl_modules/perl-font-ttf/PKGBUILD b/abs/core/perl_modules/perl-font-ttf/PKGBUILD
new file mode 100644
index 0000000..f745e1c
--- /dev/null
+++ b/abs/core/perl_modules/perl-font-ttf/PKGBUILD
@@ -0,0 +1,40 @@
+# Maintainer:
+# Contributor: Chris Severance aur.severach aATt spamgourmet dott com
+# Contributor: Jason St. John <jstjohn .. purdue . edu>
+# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
+# Contributor: Francois Charette <firmicus@gmx.net>
+
+_perlmod='Font-TTF'
+_modnamespace='Font'
+pkgname="perl-${_perlmod,,}"
+pkgver=1.06
+pkgrel=3
+pkgdesc="${_perlmod//-/::} - Perl module for TrueType font hacking"
+arch=(any)
+url="http://search.cpan.org/dist/${_perlmod}"
+license=('Artistic2.0')
+depends=(perl-io-string)
+options=(!emptydirs)
+_verwatch=("http://www.cpan.org/modules/by-module/${_modnamespace}/" "${_perlmod}-\([0-9\.]*\)\.tar\.gz" 'l')
+source=("${_verwatch[0]}${_perlmod}-${pkgver}.tar.gz")
+sha256sums=('4b697d444259759ea02d2c442c9bffe5ffe14c9214084a01f743693a944cc293')
+
+build() {
+ cd "${_perlmod}-${pkgver}"
+
+ # Install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl 'Makefile.PL' INSTALLDIRS='vendor'
+ make
+}
+
+check() {
+ cd "${_perlmod}-${pkgver}"
+ make test
+}
+
+package() {
+ cd "${_perlmod}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+ rm -r "$pkgdir"/usr/lib
+}
+
diff --git a/abs/core/perl_modules/perl-io-string/PKGBUILD b/abs/core/perl_modules/perl-io-string/PKGBUILD
new file mode 100644
index 0000000..df44d3c
--- /dev/null
+++ b/abs/core/perl_modules/perl-io-string/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-io-string
+pkgver=1.08
+pkgrel=11
+pkgdesc="IO::File interface for in-core strings"
+arch=('x86_64')
+url="http://search.cpan.org/dist/IO-String"
+license=('GPL' 'PerlArtistic')
+depends=('perl>=5.10.0')
+options=('!emptydirs')
+source=(https://www.cpan.org/authors/id/G/GA/GAAS/IO-String-$pkgver.tar.gz)
+sha256sums=('2a3f4ad8442d9070780e58ef43722d19d1ee21a803bf7c8206877a10482de5a0')
+
+build() {
+ cd "$srcdir"/IO-String-$pkgver
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd "$srcdir"/IO-String-$pkgver
+ make install DESTDIR="$pkgdir"
+ find "$pkgdir" -name '.packlist' -delete
+ find "$pkgdir" -name '*.pod' -delete
+}
diff --git a/abs/core/perl_modules/perl-sort-versions/PKGBUILD b/abs/core/perl_modules/perl-sort-versions/PKGBUILD
new file mode 100644
index 0000000..fd6f215
--- /dev/null
+++ b/abs/core/perl_modules/perl-sort-versions/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer:
+# Contributor: dracorp aka Piotr Rogoza <piotr dot r dot public at gmail.com>
+
+_author=N/NE/NEILB
+_perlmod=Sort-Versions
+pkgname=perl-sort-versions
+pkgver=1.62
+pkgrel=4
+pkgdesc='Sort::Versions - a perl 5 module for sorting of revision-like numbers'
+arch=('any')
+url="http://search.cpan.org/dist/Sort-Versions/"
+license=('GPL' 'PerlArtistic')
+depends=('perl')
+options=(!emptydirs)
+source=("http://search.cpan.org/CPAN/authors/id/$_author/$_perlmod-$pkgver.tar.gz")
+sha512sums=('b30dab96a5a31023af3ecee1857ae7bf5abc45b266294b47abb4f03c332b27825c1139d1a56bf0cfbd538487d28b3be167d83f9f5a93f079717b40157abe4d96')
+unset PERL5LIB PERL_MM_OPT PERL_MB_OPT PERL_LOCAL_LIB_ROOT
+export PERL_MM_USE_DEFAULT=1
+build(){
+ cd "$srcdir/$_perlmod-$pkgver"
+ /usr/bin/perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd $_perlmod-$pkgver
+ make test
+}
+
+package() {
+ cd $_perlmod-$pkgver
+ make install DESTDIR="$pkgdir/"
+ # remove perllocal.pod and .packlist
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+}
diff --git a/abs/core/python/PKGBUILD b/abs/core/python/PKGBUILD
index 914da6b..5a3a401 100644
--- a/abs/core/python/PKGBUILD
+++ b/abs/core/python/PKGBUILD
@@ -6,8 +6,8 @@
# Contributor: Jason Chu <jason@archlinux.org>
pkgname=python
-pkgver=3.6.4
-pkgrel=2
+pkgver=3.6.8
+pkgrel=1
_pybasever=3.6
pkgdesc="Next generation of the python high-level scripting language"
arch=('x86_64')
@@ -25,7 +25,7 @@ provides=('python3')
replaces=('python3')
source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc}
dont-make-libpython-readonly.patch)
-sha512sums=('09ba2103ac517ac4d262f00380c9aac836a53401ce252540c17fd821a3b92e1ddf32528d00772221eb3126b12cb95b62c3ac3e852f4951e6f2eb406c88c848a2'
+sha512sums=('b17867e451ebe662f50df83ed112d3656c089e7d750651ea640052b01b713b58e66aac9e082f71fd16f5b5510bc9b797f5ccd30f5399581e9aa406197f02938a'
'SKIP'
'2ef96708d5b13ae2a3d2cc62c87b4780e60ecfce914e190564492def3a11d5e56977659f41c7f9d12266e58050c766bce4e2b5d50b708eb792794fa8357920c4')
validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D') # Ned Deily (Python release signing key) <nad@python.org>
@@ -66,16 +66,15 @@ build() {
--without-ensurepip
# Obtain next free server number for xvfb-run; this even works in a chroot environment.
- #export servernum=99
- #while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done
+ export servernum=99
+ while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done
- #LC_CTYPE=en_US.UTF-8 xvfb-run -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS"
- LC_CTYPE=en_US.UTF-8 make EXTRA_CFLAGS="$CFLAGS"
+ LC_CTYPE=en_US.UTF-8 xvfb-run -s "-screen 0 1280x720x24 -ac +extension GLX" -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS"
}
check() {
- # test_gdb is expected to fail with LTO
- # test_subprocess hangs on 3.6.3
+ # test_gdb is expected to fail with LTO~
+ # test_idle, test_tk, test_ttk_guionly segfaults on 3.6.5
cd Python-${pkgver}
@@ -84,8 +83,8 @@ check() {
while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done
LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \
- LC_CTYPE=en_US.UTF-8 xvfb-run -a -n "$servernum" \
- "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_gdb -x test_subprocess
+ LC_CTYPE=en_US.UTF-8 xvfb-run -s "-screen 0 1280x720x24 -ac +extension GLX" -a -n "$servernum" \
+ "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_gdb -x test_idle -x test_tk -x test_ttk_guionly
}
package() {
diff --git a/abs/core/python/__changelog b/abs/core/python/__changelog
deleted file mode 100644
index 33c291f..0000000
--- a/abs/core/python/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-PKGBUILD: don't use xvfb-run to make
diff --git a/abs/core/python_modules/python-anytree/PKGBUILD b/abs/core/python_modules/python-anytree/PKGBUILD
new file mode 100644
index 0000000..1e86393
--- /dev/null
+++ b/abs/core/python_modules/python-anytree/PKGBUILD
@@ -0,0 +1,46 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgbase=python-anytree
+pkgname=(python-anytree python2-anytree)
+pkgver=2.4.3
+pkgrel=2
+pkgdesc="Powerful and Lightweight Python Tree Data Structure"
+url="https://anytree.readthedocs.io/"
+arch=(any)
+license=(Apache)
+makedepends=(python{,2}-{six,setuptools} git)
+_commit=bf6c5134a5257a05b2ed38b91b9f7846add08065 # tags/2.4.3
+source=("$pkgbase::git+https://github.com/c0fec0de/anytree#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgbase
+ git describe --tags | sed 's/^v//;s/-/+/g'
+}
+
+prepare() {
+ cp -a $pkgbase python2
+ cp -a $pkgbase python3
+}
+
+build() {
+ cd python3
+ python3 setup.py build
+
+ cd ../python2
+ python2 setup.py build
+}
+
+package_python-anytree() {
+ depends=(python-six)
+
+ cd python3
+ python3 setup.py install --root="$pkgdir" --optimize=1 --skip-build
+}
+
+package_python2-anytree() {
+ depends=(python2-six)
+
+ cd python2
+ python2 setup.py install --root="$pkgdir" --optimize=1 --skip-build
+}
diff --git a/abs/core/python_modules/python-lxml/PKGBUILD b/abs/core/python_modules/python-lxml/PKGBUILD
index bfb65bf..f939617 100644
--- a/abs/core/python_modules/python-lxml/PKGBUILD
+++ b/abs/core/python_modules/python-lxml/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id$
# Maintainer: Angel Velasquez <angvp@archlinux.org>
# Maintainer: Felix Yan <felixonmars@archlinux.org>
pkgbase=python-lxml
pkgname=('python-lxml' 'python2-lxml' 'python-lxml-docs')
-pkgver=4.1.1
+pkgver=4.3.0
pkgrel=1
arch=('x86_64')
license=('BSD' 'custom')
@@ -14,7 +13,7 @@ makedepends=('libxslt' 'python-setuptools' 'python2-setuptools' 'epydoc' 'python
checkdepends=('python-cssselect' 'python2-cssselect' 'python-html5lib' 'python2-html5lib'
'python-beautifulsoup4' 'python2-beautifulsoup4')
source=("https://github.com/lxml/lxml/archive/lxml-$pkgver.tar.gz")
-sha512sums=('69c64fc9f34bd8250dffcc32b6dcc93490731cd32778d7257a232fc5a126e74433ce6d4351683b71872cbeccd2c4d5a970e8fc2e631bbc273125be2b7f61ef31')
+sha512sums=('3739e243b543e8a5f678aaca19fe1b5be21351c343065fe8e52709523d4e27dbd5c846c0681473b9612fd73af6a4d04ec21c6834e53680410cab854b7f7f1675')
prepare() {
mv lxml-lxml-$pkgver lxml-$pkgver
@@ -37,10 +36,10 @@ check() {
# TODO: Find a sane way to skip inplace build
cd "$srcdir"/lxml-$pkgver
- make PYTHON=python test
+ make PYTHON=python test || warning "Tests failed"
cd "$srcdir"/lxml-$pkgver-py2
- make PYTHON=python2 test
+ make PYTHON=python2 test || warning "Tests failed"
}
package_python-lxml() {
diff --git a/abs/core/python_modules/python-pycryptodomex/PKGBUILD b/abs/core/python_modules/python-pycryptodomex/PKGBUILD
new file mode 100644
index 0000000..9e69c6d
--- /dev/null
+++ b/abs/core/python_modules/python-pycryptodomex/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Johannes Löthberg <johannes@kyriasis.com>
+# Contributor: Ivan Shapovalov <intelfx@intelfx.name>
+
+pkgbase=python-pycryptodomex
+pkgname=(python-pycryptodomex python2-pycryptodomex)
+pkgver=3.7.3
+pkgrel=1
+
+pkgdesc='A self-contained Python package of low-level cryptographic primitives'
+url='http://www.pycryptodome.org/'
+arch=('x86_64')
+license=('BSD')
+
+makedepends=('python-setuptools'
+ 'python2-setuptools')
+
+source=("https://pypi.org/packages/source/p/pycryptodomex/pycryptodomex-$pkgver.tar.gz")
+
+md5sums=('c9ed9aeb5c46fc5fc7cc8cb1ce542040')
+
+prepare() {
+ cp -a pycryptodomex-$pkgver{,-python2}
+}
+
+build() {
+ cd "$srcdir"/pycryptodomex-$pkgver
+ python setup.py build
+
+ cd "$srcdir"/pycryptodomex-$pkgver-python2
+ python2 setup.py build
+}
+
+package_python-pycryptodomex() {
+ depends=('python')
+
+ cd pycryptodomex-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1 --skip-build
+
+ install -Dm644 LICENSE.rst "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.rst
+}
+
+package_python2-pycryptodomex() {
+ depends=('python2')
+
+ cd pycryptodomex-$pkgver-python2
+ python2 setup.py install --root="$pkgdir" --optimize=1 --skip-build
+
+ install -Dm644 LICENSE.rst "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.rst
+}
diff --git a/abs/core/python_modules/python-pygments/PKGBUILD b/abs/core/python_modules/python-pygments/PKGBUILD
index 37fe169..ef7fc43 100644
--- a/abs/core/python_modules/python-pygments/PKGBUILD
+++ b/abs/core/python_modules/python-pygments/PKGBUILD
@@ -1,9 +1,8 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Timm Preetz <timm@preetz.us>
pkgname=('python-pygments' 'python2-pygments' 'pygmentize')
-pkgver=2.2.0
+pkgver=2.3.1
pkgrel=1
pkgdesc="Python syntax highlighter"
arch=('any')
@@ -12,7 +11,7 @@ license=('BSD')
makedepends=('python-setuptools' 'python2-setuptools')
options=('!emptydirs')
source=(https://pypi.org/packages/source/P/Pygments/Pygments-$pkgver.tar.gz)
-sha256sums=('dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc')
+sha256sums=('5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a')
package_python-pygments() {
depends=('python-setuptools')
diff --git a/abs/core/sudo/PKGBUILD b/abs/core/sudo/PKGBUILD
index cf0753b..db5209d 100644
--- a/abs/core/sudo/PKGBUILD
+++ b/abs/core/sudo/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=sudo
-_sudover=1.8.22
+_sudover=1.8.27
pkgver=${_sudover/p/.p}
pkgrel=1
pkgdesc="Give certain users the ability to run some commands as root"
@@ -17,7 +16,7 @@ backup=('etc/sudoers' 'etc/pam.d/sudo')
install=$pkgname.install
source=(https://www.sudo.ws/sudo/dist/$pkgname-$_sudover.tar.gz{,.sig}
sudo.pam)
-sha256sums=('7256cb27c20883b14360eddbd17f98922073d104b214cf65aeacf1d9c9b9fd02'
+sha256sums=('7beb68b94471ef56d8a1036dbcdc09a7b58a949a68ffce48b83f837dd33e2ec0'
'SKIP'
'd1738818070684a5d2c9b26224906aad69a4fea77aabd960fc2675aee2df1fa2')
validpgpkeys=('59D1E9CCBA2B376704FDD35BA9F4C021CEA470FB')
diff --git a/abs/core/system-templates/PKGBUILD b/abs/core/system-templates/PKGBUILD
index a6286d8..88b57fd 100755
--- a/abs/core/system-templates/PKGBUILD
+++ b/abs/core/system-templates/PKGBUILD
@@ -1,10 +1,10 @@
pkgname=system-templates
-pkgver=8.5
-pkgrel=5
+pkgver=8.6.0
+pkgrel=1
conflicts=( )
pkgdesc="Templates used for system configuration"
depends=()
-arch=('i686' 'x86_64')
+arch=('x86_64')
source=()
package() {
diff --git a/abs/core/system-templates/templates/remotes/favorites/streamzap/Lircmap.xml b/abs/core/system-templates/templates/remotes/favorites/streamzap/Lircmap.xml
index 0960d0b..fe4aec4 100644
--- a/abs/core/system-templates/templates/remotes/favorites/streamzap/Lircmap.xml
+++ b/abs/core/system-templates/templates/remotes/favorites/streamzap/Lircmap.xml
@@ -16,7 +16,7 @@
<play>PLAY</play>
<pause>PAUSE</pause>
<stop>STOP</stop>
- <forward>FOWARD</forward>
+ <forward>FORWARD</forward>
<reverse>REWIND</reverse>
<left>LEFT</left>
<right>RIGHT</right>
diff --git a/abs/core/system-templates/templates/remotes/favorites/streamzap/lircrc b/abs/core/system-templates/templates/remotes/favorites/streamzap/lircrc
index 089c5d7..88a14b8 100644
--- a/abs/core/system-templates/templates/remotes/favorites/streamzap/lircrc
+++ b/abs/core/system-templates/templates/remotes/favorites/streamzap/lircrc
@@ -305,7 +305,7 @@ end
begin
prog = mythtv
# fast forward
-button = FOWARD
+button = FORWARD
config = End
end
@@ -439,7 +439,7 @@ end
begin
prog = mplayer
# fast forward
-button = FOWARD
+button = FORWARD
config = speed_mult 2.0
end
@@ -514,7 +514,7 @@ end
begin
prog = xine
-button = FOWARD
+button = FORWARD
repeat = 4
#config = SeekRelative+30
config = SpeedFaster
@@ -731,7 +731,7 @@ end
begin
prog = xmms
- button = FOWARD
+ button = FORWARD
config = FWD 10
repeat = 2
end
diff --git a/abs/core/system-templates/templates/xorg/340xx_supported.txt b/abs/core/system-templates/templates/xorg/340xx_supported.txt
index f7a5326..2f165e1 100644
--- a/abs/core/system-templates/templates/xorg/340xx_supported.txt
+++ b/abs/core/system-templates/templates/xorg/340xx_supported.txt
@@ -1,7 +1,8 @@
-http://www.nvidia.com/object/IO_32667.html
-http://us.download.nvidia.com/XFree86/Linux-x86/340.106/README/supportedchips.html
+#http://www.nvidia.com/object/IO_32667.html
+#http://us.download.nvidia.com/XFree86/Linux-x86/340.107/README/supportedchips.html
NVIDIA GeForce GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
GeForce 8800 GTX 0x0191 -
GeForce 8800 GTS 0x0193 -
@@ -722,8 +723,8 @@ GeForce GTX 850A 0x1391 0x3697 E
GeForce GTX 860M 0x1392 E
GeForce GTX 750 Ti 0x1392 0x861E E
GeForce 840M 0x1393 E
-
NVIDIA Quadro GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
Quadro FX 5600 0x019D -
Quadro FX 4600 0x019E -
@@ -802,8 +803,8 @@ Quadro K610M 0x12B9 D
Quadro K510M 0x12BA D
Quadro K2200 0x13BA E
Quadro K620 0x13BB E
-
NVIDIA NVS GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
Quadro NVS 320M 0x040B A
Quadro NVS 140M 0x0429 A
@@ -833,8 +834,8 @@ NVS 5200M 0x1140 0x2200 C
NVS 5200M 0x1140 0xC0E2 C
NVS 5200M 0x1140 0xC0E3 C
NVS 5200M 0x1140 0xC0E4 C
-
NVIDIA Tesla GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
Tesla C870 0x0197 -
Tesla C1060 0x05E7 A
@@ -876,10 +877,11 @@ Tesla C2075 0x1096 C
Tesla C2050 0x1096 0x0911 C
Tesla K10 0x118F D
Tesla K8 0x1194 D
-
NVIDIA GRID GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
GRID K340 0x0FEF D
GRID K1 0x0FF2 D
GRID K520 0x118A D
GRID K2 0x11BF D
+
diff --git a/abs/core/system-templates/templates/xorg/390xx_supported.txt b/abs/core/system-templates/templates/xorg/390xx_supported.txt
new file mode 100644
index 0000000..d469e54
--- /dev/null
+++ b/abs/core/system-templates/templates/xorg/390xx_supported.txt
@@ -0,0 +1,923 @@
+#http://us.download.nvidia.com/XFree86/Linux-x86_64/390.116/README/supportedchips.html
+
+NVIDIA GeForce GPUs
+
+NVIDIA GPU product Device PCI ID* VDPAU features
+GeForce GTX 480 06C0 C
+GeForce GTX 465 06C4 C
+GeForce GTX 480M 06CA C
+GeForce GTX 470 06CD C
+GeForce GT 440 0DC0 C
+GeForce GTS 450 0DC4 C
+GeForce GTS 450 0DC5 C
+GeForce GTS 450 0DC6 C
+GeForce GT 555M 0DCD C
+GeForce GT 555M 0DCE C
+GeForce GTX 460M 0DD1 C
+GeForce GT 445M 0DD2 C
+GeForce GT 435M 0DD3 C
+GeForce GT 550M 0DD6 C
+GeForce GT 440 0DE0 C
+GeForce GT 430 0DE1 C
+GeForce GT 420 0DE2 C
+GeForce GT 635M 0DE3 C
+GeForce GT 520 0DE4 C
+GeForce GT 530 0DE5 C
+GeForce GT 610 0DE7 C
+GeForce GT 620M 0DE8 C
+GeForce GT 630M 0DE9 C
+GeForce GT 620M 0DE9 1025 0692 C
+GeForce GT 620M 0DE9 1025 0725 C
+GeForce GT 620M 0DE9 1025 0728 C
+GeForce GT 620M 0DE9 1025 072B C
+GeForce GT 620M 0DE9 1025 072E C
+GeForce GT 620M 0DE9 1025 0753 C
+GeForce GT 620M 0DE9 1025 0754 C
+GeForce GT 640M LE 0DE9 17AA 3977 C
+GeForce GT 635M 0DE9 1B0A 2210 C
+GeForce 610M 0DEA C
+GeForce 615 0DEA 17AA 365A C
+GeForce 615 0DEA 17AA 365B C
+GeForce 615 0DEA 17AA 365E C
+GeForce 615 0DEA 17AA 3660 C
+GeForce 615 0DEA 17AA 366C C
+GeForce GT 555M 0DEB C
+GeForce GT 525M 0DEC C
+GeForce GT 520M 0DED C
+GeForce GT 415M 0DEE C
+GeForce GT 425M 0DF0 C
+GeForce GT 420M 0DF1 C
+GeForce GT 435M 0DF2 C
+GeForce GT 420M 0DF3 C
+GeForce GT 540M 0DF4 C
+GeForce GT 630M 0DF4 152D 0952 C
+GeForce GT 630M 0DF4 152D 0953 C
+GeForce GT 525M 0DF5 C
+GeForce GT 550M 0DF6 C
+GeForce GT 520M 0DF7 C
+GeForce GTX 460 0E22 C
+GeForce GTX 460 SE 0E23 C
+GeForce GTX 460 0E24 C
+GeForce GTX 470M 0E30 C
+GeForce GTX 485M 0E31 C
+GeForce GT 630 0F00 C
+GeForce GT 620 0F01 C
+GeForce GT 730 0F02 C
+GeForce GT 610 0F03 C
+GeForce GT 640 0FC0 C
+GeForce GT 640 0FC1 C
+GeForce GT 630 0FC2 C
+GeForce GTX 650 0FC6 D
+GeForce GT 740 0FC8 D
+GeForce GT 730 0FC9 C
+GeForce GT 755M 0FCD D
+GeForce GT 640M LE 0FCE C
+GeForce GT 650M 0FD1 D
+GeForce GT 640M 0FD2 D
+GeForce GT 640M LE 0FD2 1028 0595 C
+GeForce GT 640M LE 0FD2 1028 05B2 C
+GeForce GT 640M LE 0FD3 C
+GeForce GTX 660M 0FD4 D
+GeForce GT 650M 0FD5 D
+GeForce GT 640M 0FD8 D
+GeForce GT 645M 0FD9 D
+GeForce GT 740M 0FDF D
+GeForce GTX 660M 0FE0 D
+GeForce GT 730M 0FE1 D
+GeForce GT 745M 0FE2 D
+GeForce GT 745M 0FE3 D
+GeForce GT 745A 0FE3 103C 2B16 D
+GeForce GT 745A 0FE3 17AA 3675 D
+GeForce GT 750M 0FE4 D
+GeForce GT 750M 0FE9 D
+GeForce GT 755M 0FEA D
+GeForce 710A 0FEC C
+GeForce 820M 0FED C
+GeForce 810M 0FEE C
+GeForce GTX TITAN Z 1001 D
+GeForce GTX 780 1004 D
+GeForce GTX TITAN 1005 D
+GeForce GTX 780 1007 D
+GeForce GTX 780 Ti 1008 D
+GeForce GTX 780 Ti 100A D
+GeForce GTX TITAN Black 100C D
+GeForce GT 520 1040 C
+GeForce 510 1042 D
+GeForce 605 1048 D
+GeForce GT 620 1049 C
+GeForce GT 610 104A C
+GeForce GT 625 (OEM) 104B D
+GeForce GT 625 104B 1043 844C D
+GeForce GT 625 104B 1043 846B D
+GeForce GT 625 104B 1462 B590 D
+GeForce GT 625 104B 174B 0625 D
+GeForce GT 625 104B 174B A625 D
+GeForce GT 705 104C D
+GeForce GT 520M 1050 C
+GeForce GT 520MX 1051 D
+GeForce GT 520M 1052 C
+GeForce 410M 1054 D
+GeForce 410M 1055 D
+GeForce 610M 1058 C
+GeForce 610 1058 103C 2AF1 D
+GeForce 800A 1058 17AA 3682 D
+GeForce 705A 1058 17AA 3692 C
+GeForce 800A 1058 17AA 3695 D
+GeForce 800A 1058 17AA 36A8 D
+GeForce 800A 1058 17AA 36AC D
+GeForce 800A 1058 17AA 36AD D
+GeForce 800A 1058 705A 3682 D
+GeForce 610M 1059 C
+GeForce 610M 105A C
+GeForce 705M 105B C
+GeForce 705A 105B 103C 2AFB C
+GeForce 800A 105B 17AA 30B1 D
+GeForce 705A 105B 17AA 30F3 C
+GeForce 800A 105B 17AA 36A1 D
+GeForce GTX 580 1080 C
+GeForce GTX 570 1081 C
+GeForce GTX 560 Ti 1082 C
+GeForce GTX 560 1084 C
+GeForce GTX 570 1086 C
+GeForce GTX 560 Ti 1087 C
+GeForce GTX 590 1088 C
+GeForce GTX 580 1089 C
+GeForce GTX 580 108B C
+GeForce 820M 1140 1019 0799 C
+GeForce GT 720M 1140 1019 999F C
+GeForce GT 620M 1140 1025 0600 C
+GeForce GT 620M 1140 1025 0606 C
+GeForce GT 620M 1140 1025 064A C
+GeForce GT 620M 1140 1025 064C C
+GeForce GT 620M 1140 1025 067A C
+GeForce GT 620M 1140 1025 0680 C
+GeForce 710M 1140 1025 0686 C
+GeForce 710M 1140 1025 0689 C
+GeForce 710M 1140 1025 068B C
+GeForce 710M 1140 1025 068D C
+GeForce 710M 1140 1025 068E C
+GeForce 710M 1140 1025 0691 C
+GeForce GT 620M 1140 1025 0692 C
+GeForce GT 620M 1140 1025 0694 C
+GeForce GT 620M 1140 1025 0702 C
+GeForce GT 620M 1140 1025 0719 C
+GeForce GT 620M 1140 1025 0725 C
+GeForce GT 620M 1140 1025 0728 C
+GeForce GT 620M 1140 1025 072B C
+GeForce GT 620M 1140 1025 072E C
+GeForce GT 620M 1140 1025 0732 C
+GeForce GT 720M 1140 1025 0763 C
+GeForce 710M 1140 1025 0773 C
+GeForce 710M 1140 1025 0774 C
+GeForce GT 720M 1140 1025 0776 C
+GeForce 710M 1140 1025 077A C
+GeForce 710M 1140 1025 077B C
+GeForce 710M 1140 1025 077C C
+GeForce 710M 1140 1025 077D C
+GeForce 710M 1140 1025 077E C
+GeForce 710M 1140 1025 077F C
+GeForce GT 720M 1140 1025 0781 C
+GeForce GT 720M 1140 1025 0798 C
+GeForce GT 720M 1140 1025 0799 C
+GeForce GT 720M 1140 1025 079B C
+GeForce GT 720M 1140 1025 079C C
+GeForce GT 720M 1140 1025 0807 C
+GeForce 820M 1140 1025 0821 C
+GeForce GT 720M 1140 1025 0823 C
+GeForce GT 720M 1140 1025 0830 C
+GeForce GT 720M 1140 1025 0833 C
+GeForce GT 720M 1140 1025 0837 C
+GeForce 820M 1140 1025 083E C
+GeForce 710M 1140 1025 0841 C
+GeForce 820M 1140 1025 0853 C
+GeForce 820M 1140 1025 0854 C
+GeForce 820M 1140 1025 0855 C
+GeForce 820M 1140 1025 0856 C
+GeForce 820M 1140 1025 0857 C
+GeForce 820M 1140 1025 0858 C
+GeForce 820M 1140 1025 0863 C
+GeForce 820M 1140 1025 0868 C
+GeForce 810M 1140 1025 0869 C
+GeForce 820M 1140 1025 0873 C
+GeForce 820M 1140 1025 0878 C
+GeForce 820M 1140 1025 087B C
+GeForce 820M 1140 1025 087F C
+GeForce 820M 1140 1025 0881 C
+GeForce 820M 1140 1025 0885 C
+GeForce 820M 1140 1025 088A C
+GeForce 820M 1140 1025 089B C
+GeForce 820M 1140 1025 0921 C
+GeForce 810M 1140 1025 092E C
+GeForce 820M 1140 1025 092F C
+GeForce 820M 1140 1025 0932 C
+GeForce 820M 1140 1025 093A C
+GeForce 820M 1140 1025 093C C
+GeForce 820M 1140 1025 093F C
+GeForce 820M 1140 1025 0941 C
+GeForce 820M 1140 1025 0945 C
+GeForce 820M 1140 1025 0954 C
+GeForce 820M 1140 1025 0965 C
+GeForce GT 630M 1140 1028 054D C
+GeForce GT 630M 1140 1028 054E C
+GeForce GT 620M 1140 1028 0554 C
+GeForce GT 620M 1140 1028 0557 C
+GeForce GT 625M 1140 1028 0562 C
+GeForce GT 630M 1140 1028 0565 C
+GeForce GT 630M 1140 1028 0568 C
+GeForce GT 630M 1140 1028 0590 C
+GeForce GT 625M 1140 1028 0592 C
+GeForce GT 625M 1140 1028 0594 C
+GeForce GT 625M 1140 1028 0595 C
+GeForce GT 625M 1140 1028 05A2 C
+GeForce GT 625M 1140 1028 05B1 C
+GeForce GT 625M 1140 1028 05B3 C
+GeForce GT 630M 1140 1028 05DA C
+GeForce GT 720M 1140 1028 05DE C
+GeForce GT 720M 1140 1028 05E0 C
+GeForce GT 630M 1140 1028 05E8 C
+GeForce GT 720M 1140 1028 05F4 C
+GeForce GT 720M 1140 1028 060F C
+GeForce GT 720M 1140 1028 062F C
+GeForce 820M 1140 1028 064E C
+GeForce 820M 1140 1028 0652 C
+GeForce 820M 1140 1028 0653 C
+GeForce 820M 1140 1028 0655 C
+GeForce 820M 1140 1028 065E C
+GeForce 820M 1140 1028 0662 C
+GeForce 820M 1140 1028 068D C
+GeForce 820M 1140 1028 06AD C
+GeForce 820M 1140 1028 06AE C
+GeForce 820M 1140 1028 06AF C
+GeForce 820M 1140 1028 06B0 C
+GeForce 820M 1140 1028 06C0 C
+GeForce 820M 1140 1028 06C1 C
+GeForce GT 630M 1140 103C 18EF C
+GeForce GT 630M 1140 103C 18F9 C
+GeForce GT 630M 1140 103C 18FB C
+GeForce GT 630M 1140 103C 18FD C
+GeForce GT 630M 1140 103C 18FF C
+GeForce 820M 1140 103C 218A C
+GeForce 820M 1140 103C 21BB C
+GeForce 820M 1140 103C 21BC C
+GeForce 820M 1140 103C 220E C
+GeForce 820M 1140 103C 2210 C
+GeForce 820M 1140 103C 2212 C
+GeForce 820M 1140 103C 2214 C
+GeForce 820M 1140 103C 2218 C
+GeForce 820M 1140 103C 225B C
+GeForce 820M 1140 103C 225D C
+GeForce 820M 1140 103C 226D C
+GeForce 820M 1140 103C 226F C
+GeForce 820M 1140 103C 22D2 C
+GeForce 820M 1140 103C 22D9 C
+GeForce 820M 1140 103C 2335 C
+GeForce 820M 1140 103C 2337 C
+GeForce GT 720A 1140 103C 2AEF C
+GeForce 710A 1140 103C 2AF9 C
+GeForce GT 720M 1140 1043 11FD C
+GeForce GT 720M 1140 1043 124D C
+GeForce GT 720M 1140 1043 126D C
+GeForce GT 720M 1140 1043 131D C
+GeForce GT 720M 1140 1043 13FD C
+GeForce GT 720M 1140 1043 14C7 C
+GeForce GT 620M 1140 1043 1507 C
+GeForce 820M 1140 1043 15AD C
+GeForce 820M 1140 1043 15ED C
+GeForce 820M 1140 1043 160D C
+GeForce 820M 1140 1043 163D C
+GeForce 820M 1140 1043 165D C
+GeForce 820M 1140 1043 166D C
+GeForce 820M 1140 1043 16CD C
+GeForce 820M 1140 1043 16DD C
+GeForce 820M 1140 1043 170D C
+GeForce 820M 1140 1043 176D C
+GeForce 820M 1140 1043 178D C
+GeForce 820M 1140 1043 179D C
+GeForce GT 620M 1140 1043 2132 C
+GeForce GT 720M 1140 1043 21BA C
+GeForce GT 720M 1140 1043 21FA C
+GeForce GT 720M 1140 1043 220A C
+GeForce GT 720M 1140 1043 221A C
+GeForce GT 710M 1140 1043 223A C
+GeForce GT 710M 1140 1043 224A C
+GeForce 820M 1140 1043 227A C
+GeForce 820M 1140 1043 228A C
+GeForce 820M 1140 1043 22FA C
+GeForce 820M 1140 1043 232A C
+GeForce 820M 1140 1043 233A C
+GeForce 820M 1140 1043 235A C
+GeForce 820M 1140 1043 236A C
+GeForce 820M 1140 1043 238A C
+GeForce GT 720M 1140 1043 8595 C
+GeForce GT 720M 1140 1043 85EA C
+GeForce 820M 1140 1043 85EB C
+GeForce 820M 1140 1043 85EC C
+GeForce GT 720M 1140 1043 85EE C
+GeForce 820M 1140 1043 85F3 C
+GeForce 820M 1140 1043 860E C
+GeForce 820M 1140 1043 861A C
+GeForce 820M 1140 1043 861B C
+GeForce 820M 1140 1043 8628 C
+GeForce 820M 1140 1043 8643 C
+GeForce 820M 1140 1043 864C C
+GeForce 820M 1140 1043 8652 C
+GeForce 820M 1140 1043 8660 C
+GeForce 820M 1140 1043 8661 C
+GeForce GT 720M 1140 105B 0DAC C
+GeForce GT 720M 1140 105B 0DAD C
+GeForce GT 720M 1140 105B 0EF3 C
+GeForce GT 720M 1140 10CF 17F5 C
+GeForce 710M 1140 1179 FA01 C
+GeForce 710M 1140 1179 FA02 C
+GeForce 710M 1140 1179 FA03 C
+GeForce 710M 1140 1179 FA05 C
+GeForce 710M 1140 1179 FA11 C
+GeForce 710M 1140 1179 FA13 C
+GeForce 710M 1140 1179 FA18 C
+GeForce 710M 1140 1179 FA19 C
+GeForce 710M 1140 1179 FA21 C
+GeForce 710M 1140 1179 FA23 C
+GeForce 710M 1140 1179 FA2A C
+GeForce 710M 1140 1179 FA32 C
+GeForce 710M 1140 1179 FA33 C
+GeForce 710M 1140 1179 FA36 C
+GeForce 710M 1140 1179 FA38 C
+GeForce 710M 1140 1179 FA42 C
+GeForce 710M 1140 1179 FA43 C
+GeForce 710M 1140 1179 FA45 C
+GeForce 710M 1140 1179 FA47 C
+GeForce 710M 1140 1179 FA49 C
+GeForce 710M 1140 1179 FA58 C
+GeForce 710M 1140 1179 FA59 C
+GeForce 710M 1140 1179 FA88 C
+GeForce 710M 1140 1179 FA89 C
+GeForce GT 620M 1140 144D B092 C
+GeForce GT 630M 1140 144D C0D5 C
+GeForce GT 620M 1140 144D C0D7 C
+GeForce 820M 1140 144D C10D C
+GeForce GT 620M 1140 144D C652 C
+GeForce 710M 1140 144D C709 C
+GeForce 710M 1140 144D C711 C
+GeForce 710M 1140 144D C736 C
+GeForce 710M 1140 144D C737 C
+GeForce 820M 1140 144D C745 C
+GeForce 820M 1140 144D C750 C
+GeForce GT 710M 1140 1462 10B8 C
+GeForce GT 720M 1140 1462 10E9 C
+GeForce 820M 1140 1462 1116 C
+GeForce 720M 1140 1462 AA33 C
+GeForce GT 720M 1140 1462 AAA2 C
+GeForce 820M 1140 1462 AAA3 C
+GeForce GT 720M 1140 1462 ACB2 C
+GeForce GT 720M 1140 1462 ACC1 C
+GeForce 720M 1140 1462 AE61 C
+GeForce GT 720M 1140 1462 AE65 C
+GeForce 820M 1140 1462 AE6A C
+GeForce GT 720M 1140 1462 AE71 C
+GeForce 820M 1140 14C0 0083 C
+GeForce 620M 1140 152D 0926 C
+GeForce GT 630M 1140 152D 0982 C
+GeForce GT 630M 1140 152D 0983 C
+GeForce GT 820M 1140 152D 1005 C
+GeForce 710M 1140 152D 1012 C
+GeForce 820M 1140 152D 1019 C
+GeForce GT 630M 1140 152D 1030 C
+GeForce 710M 1140 152D 1055 C
+GeForce GT 720M 1140 152D 1067 C
+GeForce 820M 1140 152D 1092 C
+GeForce GT 720M 1140 17AA 2213 C
+GeForce GT 720M 1140 17AA 2220 C
+GeForce GT 720A 1140 17AA 309C C
+GeForce 820A 1140 17AA 30B4 C
+GeForce 720A 1140 17AA 30B7 C
+GeForce 820A 1140 17AA 30E4 C
+GeForce 820A 1140 17AA 361B C
+GeForce 820A 1140 17AA 361C C
+GeForce 820A 1140 17AA 361D C
+GeForce GT 620M 1140 17AA 3656 C
+GeForce 705M 1140 17AA 365A C
+GeForce 800M 1140 17AA 365E C
+GeForce 820A 1140 17AA 3661 C
+GeForce 800M 1140 17AA 366C C
+GeForce 800M 1140 17AA 3685 C
+GeForce 800M 1140 17AA 3686 C
+GeForce 705A 1140 17AA 3687 C
+GeForce 820A 1140 17AA 3696 C
+GeForce 820A 1140 17AA 369B C
+GeForce 820A 1140 17AA 369C C
+GeForce 820A 1140 17AA 369D C
+GeForce 820A 1140 17AA 369E C
+GeForce 820A 1140 17AA 36A6 C
+GeForce 820A 1140 17AA 36A7 C
+GeForce 820A 1140 17AA 36A9 C
+GeForce 820A 1140 17AA 36AF C
+GeForce 820A 1140 17AA 36B0 C
+GeForce 820A 1140 17AA 36B6 C
+GeForce GT 720M 1140 17AA 3800 C
+GeForce GT 720M 1140 17AA 3801 C
+GeForce GT 720M 1140 17AA 3802 C
+GeForce GT 720M 1140 17AA 3803 C
+GeForce GT 720M 1140 17AA 3804 C
+GeForce GT 720M 1140 17AA 3806 C
+GeForce GT 720M 1140 17AA 3808 C
+GeForce GT 820M 1140 17AA 380D C
+GeForce GT 820M 1140 17AA 380E C
+GeForce GT 820M 1140 17AA 380F C
+GeForce GT 820M 1140 17AA 3811 C
+GeForce 820M 1140 17AA 3812 C
+GeForce 820M 1140 17AA 3813 C
+GeForce 820M 1140 17AA 3816 C
+GeForce 820M 1140 17AA 3817 C
+GeForce 820M 1140 17AA 3818 C
+GeForce 820M 1140 17AA 381A C
+GeForce 820M 1140 17AA 381C C
+GeForce 820M 1140 17AA 381D C
+GeForce 610M 1140 17AA 3901 C
+GeForce 710M 1140 17AA 3902 C
+GeForce 710M 1140 17AA 3903 C
+GeForce GT 625M 1140 17AA 3904 C
+GeForce GT 720M 1140 17AA 3905 C
+GeForce 820M 1140 17AA 3907 C
+GeForce GT 720M 1140 17AA 3910 C
+GeForce GT 720M 1140 17AA 3912 C
+GeForce 820M 1140 17AA 3913 C
+GeForce 820M 1140 17AA 3915 C
+GeForce 610M 1140 17AA 3983 C
+GeForce 610M 1140 17AA 5001 C
+GeForce GT 720M 1140 17AA 5003 C
+GeForce 705M 1140 17AA 5005 C
+GeForce GT 620M 1140 17AA 500D C
+GeForce 710M 1140 17AA 5014 C
+GeForce 710M 1140 17AA 5017 C
+GeForce 710M 1140 17AA 5019 C
+GeForce 710M 1140 17AA 501A C
+GeForce GT 720M 1140 17AA 501F C
+GeForce 710M 1140 17AA 5025 C
+GeForce 710M 1140 17AA 5027 C
+GeForce 710M 1140 17AA 502A C
+GeForce GT 720M 1140 17AA 502B C
+GeForce 710M 1140 17AA 502D C
+GeForce GT 720M 1140 17AA 502E C
+GeForce GT 720M 1140 17AA 502F C
+GeForce 705M 1140 17AA 5030 C
+GeForce 705M 1140 17AA 5031 C
+GeForce 820M 1140 17AA 5032 C
+GeForce 820M 1140 17AA 5033 C
+GeForce 710M 1140 17AA 503E C
+GeForce 820M 1140 17AA 503F C
+GeForce 820M 1140 17AA 5040 C
+GeForce 710M 1140 1854 0177 C
+GeForce 710M 1140 1854 0180 C
+GeForce GT 720M 1140 1854 0190 C
+GeForce GT 720M 1140 1854 0192 C
+GeForce 820M 1140 1854 0224 C
+GeForce 820M 1140 1B0A 01C0 C
+GeForce GT 620M 1140 1B0A 20DD C
+GeForce GT 620M 1140 1B0A 20DF C
+GeForce 820M 1140 1B0A 210E C
+GeForce GT 720M 1140 1B0A 2202 C
+GeForce 820M 1140 1B0A 90D7 C
+GeForce 820M 1140 1B0A 90DD C
+GeForce 820M 1140 1B50 5530 C
+GeForce GT 720M 1140 1B6C 5031 C
+GeForce 820M 1140 1BAB 0106 C
+GeForce 810M 1140 1D05 1013 C
+GeForce GTX 680 1180 D
+GeForce GTX 660 Ti 1183 D
+GeForce GTX 770 1184 D
+GeForce GTX 660 1185 D
+GeForce GTX 760 1185 10DE 106F D
+GeForce GTX 760 1187 D
+GeForce GTX 690 1188 D
+GeForce GTX 670 1189 D
+GeForce GTX 760 Ti OEM 1189 10DE 1074 D
+GeForce GTX 760 (192-bit) 118E D
+GeForce GTX 760 Ti OEM 1193 D
+GeForce GTX 660 1195 D
+GeForce GTX 880M 1198 D
+GeForce GTX 870M 1199 D
+GeForce GTX 760 1199 1458 D001 D
+GeForce GTX 860M 119A D
+GeForce GTX 775M 119D D
+GeForce GTX 780M 119E D
+GeForce GTX 780M 119F D
+GeForce GTX 680M 11A0 D
+GeForce GTX 670MX 11A1 D
+GeForce GTX 675MX 11A2 D
+GeForce GTX 680MX 11A3 D
+GeForce GTX 675MX 11A7 D
+GeForce GTX 660 11C0 D
+GeForce GTX 650 Ti BOOST 11C2 D
+GeForce GTX 650 Ti 11C3 D
+GeForce GTX 645 11C4 D
+GeForce GT 740 11C5 D
+GeForce GTX 650 Ti 11C6 D
+GeForce GTX 650 11C8 D
+GeForce GT 740 11CB D
+GeForce GTX 770M 11E0 D
+GeForce GTX 765M 11E1 D
+GeForce GTX 765M 11E2 D
+GeForce GTX 760M 11E3 D
+GeForce GTX 760A 11E3 17AA 3683 D
+GeForce GTX 560 Ti 1200 C
+GeForce GTX 560 1201 C
+GeForce GTX 460 SE v2 1203 C
+GeForce GTX 460 v2 1205 C
+GeForce GTX 555 1206 C
+GeForce GT 645 1207 C
+GeForce GTX 560 SE 1208 C
+GeForce GTX 570M 1210 C
+GeForce GTX 580M 1211 C
+GeForce GTX 675M 1212 C
+GeForce GTX 670M 1213 C
+GeForce GT 545 1241 C
+GeForce GT 545 1243 C
+GeForce GTX 550 Ti 1244 C
+GeForce GTS 450 1245 C
+GeForce GT 550M 1246 C
+GeForce GT 555M 1247 C
+GeForce GT 635M 1247 1043 212A C
+GeForce GT 635M 1247 1043 212B C
+GeForce GT 635M 1247 1043 212C C
+GeForce GT 555M 1248 C
+GeForce GTS 450 1249 C
+GeForce GT 640 124B C
+GeForce GT 555M 124D C
+GeForce GT 635M 124D 1462 10CC C
+GeForce GTX 560M 1251 C
+GeForce GT 635 1280 D
+GeForce GT 710 1281 D
+GeForce GT 640 1282 C
+GeForce GT 630 1284 C
+GeForce GT 720 1286 D
+GeForce GT 730 1287 C
+GeForce GT 720 1288 D
+GeForce GT 710 1289 D
+GeForce GT 710 128B D
+GeForce GT 730M 1290 D
+GeForce 730A 1290 103C 2AFA D
+GeForce GT 735M 1291 D
+GeForce GT 740M 1292 D
+GeForce GT 740A 1292 17AA 3675 D
+GeForce GT 740A 1292 17AA 367C D
+GeForce GT 740A 1292 17AA 3684 D
+GeForce GT 730M 1293 D
+GeForce 710M 1295 D
+GeForce 710A 1295 103C 2B0D C
+GeForce 710A 1295 103C 2B0F C
+GeForce 810A 1295 103C 2B20 D
+GeForce 810A 1295 103C 2B21 D
+GeForce 805A 1295 17AA 367A D
+GeForce 710A 1295 17AA 367C D
+GeForce 825M 1296 D
+GeForce GT 720M 1298 C
+GeForce 920M 1299 D
+GeForce 920A 1299 17AA 30BB D
+GeForce 920A 1299 17AA 30DA D
+GeForce 920A 1299 17AA 30DC D
+GeForce 920A 1299 17AA 30DD D
+GeForce 920A 1299 17AA 30DF D
+GeForce 920A 1299 17AA 3117 D
+GeForce 920A 1299 17AA 361B D
+GeForce 920A 1299 17AA 362D D
+GeForce 920A 1299 17AA 362E D
+GeForce 920A 1299 17AA 3630 D
+GeForce 920A 1299 17AA 3637 D
+GeForce 920A 1299 17AA 369B D
+GeForce 920A 1299 17AA 36A7 D
+GeForce 920A 1299 17AA 36AF D
+GeForce 920A 1299 17AA 36F0 D
+GeForce GT 730 1299 1B0A 01C6 C
+GeForce 910M 129A D
+GeForce 830M 1340 E
+GeForce 830A 1340 103C 2B2B E
+GeForce 840M 1341 E
+GeForce 840A 1341 17AA 3697 E
+GeForce 840A 1341 17AA 3699 E
+GeForce 840A 1341 17AA 369C E
+GeForce 840A 1341 17AA 36AF E
+GeForce 845M 1344 E
+GeForce 930M 1346 E
+GeForce 930A 1346 17AA 30BA E
+GeForce 930A 1346 17AA 362C E
+GeForce 930A 1346 17AA 362F E
+GeForce 930A 1346 17AA 3636 E
+GeForce 940M 1347 E
+GeForce 940A 1347 17AA 36B9 E
+GeForce 940A 1347 17AA 36BA E
+GeForce 945M 1348 E
+GeForce 945A 1348 103C 2B5C E
+GeForce 930M 1349 E
+GeForce 930A 1349 17AA 3124 E
+GeForce 930A 1349 17AA 364B E
+GeForce 930A 1349 17AA 36C3 E
+GeForce 930A 1349 17AA 36D1 E
+GeForce 930A 1349 17AA 36D8 E
+GeForce 940MX 134B E
+GeForce GPU 134B 1414 0008 E
+GeForce 940MX 134D E
+GeForce 930MX 134E E
+GeForce 920MX 134F E
+GeForce 940A 137D 17AA 3699 E
+GeForce GTX 750 Ti 1380 E
+GeForce GTX 750 1381 E
+GeForce GTX 745 1382 E
+GeForce 845M 1390 E
+GeForce GTX 850M 1391 E
+GeForce GTX 850A 1391 17AA 3697 E
+GeForce GTX 860M 1392 D
+GeForce GPU 1392 1028 066A E
+GeForce GTX 750 Ti 1392 1043 861E E
+GeForce GTX 750 Ti 1392 1043 86D9 E
+GeForce 840M 1393 E
+GeForce 845M 1398 E
+GeForce 945M 1399 E
+GeForce GTX 950M 139A E
+GeForce GTX 950A 139A 17AA 362C E
+GeForce GTX 950A 139A 17AA 362F E
+GeForce GTX 950A 139A 17AA 363F E
+GeForce GTX 950A 139A 17AA 3640 E
+GeForce GTX 950A 139A 17AA 3647 E
+GeForce GTX 950A 139A 17AA 36B9 E
+GeForce GTX 960M 139B E
+GeForce GTX 750 Ti 139B 1025 107A E
+GeForce GTX 860M 139B 1028 06A3 D
+GeForce GTX 960A 139B 103C 2B4C E
+GeForce GTX 750Ti 139B 17AA 3649 E
+GeForce GTX 960A 139B 17AA 36BF E
+GeForce GTX 750 Ti 139B 19DA C248 E
+GeForce GTX 750Ti 139B 1AFA 8A75 E
+GeForce 940M 139C E
+GeForce GTX 750 Ti 139D E
+GeForce GTX 980 13C0 E
+GeForce GTX 970 13C2 E
+GeForce GTX 980M 13D7 E
+GeForce GTX 970M 13D8 E
+GeForce GTX 960 13D8 1462 1198 E
+GeForce GTX 960 13D8 1462 1199 E
+GeForce GTX 960 13D8 19DA B282 E
+GeForce GTX 960 13D8 19DA B284 E
+GeForce GTX 960 13D8 19DA B286 E
+GeForce GTX 965M 13D9 E
+GeForce GTX 980 13DA E
+GeForce GTX 960 1401 F
+GeForce GTX 950 1402 F
+GeForce GTX 960 1406 F
+GeForce GTX 750 1407 E
+GeForce GTX 965M 1427 E
+GeForce GTX 950 1427 1458 D003 F
+GeForce GTX 980M 1617 E
+GeForce GTX 970M 1618 E
+GeForce GTX 965M 1619 E
+GeForce GTX 980 161A E
+GeForce GTX 965M 1667 E
+GeForce MX130 174D E
+GeForce MX110 174E E
+GeForce 940MX 179C E
+GeForce GTX TITAN X 17C2 E
+GeForce GTX 980 Ti 17C8 E
+TITAN X (Pascal) 1B00 H
+TITAN Xp 1B02 H
+TITAN Xp COLLECTORS EDITION 1B02 10DE 123E H
+TITAN Xp COLLECTORS EDITION 1B02 10DE 123F H
+GeForce GTX 1080 Ti 1B06 H
+GeForce GTX 1080 1B80 H
+GeForce GTX 1070 1B81 H
+GeForce GTX 1070 Ti 1B82 H
+GeForce GTX 1060 6GB 1B83 H
+GeForce GTX 1060 3GB 1B84 H
+P104-100 1B87 H
+GeForce GTX 1080 1BA0 H
+GeForce GTX 1080 with Max-Q Design 1BA0 1028 0887 H
+GeForce GTX 1070 1BA1 H
+GeForce GTX 1070 with MaxQ Design 1BA1 1458 1651 H
+GeForce GTX 1070 With Max-Q Design 1BA1 1458 1653 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 11E8 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 11E9 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1225 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1226 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1227 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1558 9501 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1558 95E1 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1A58 2000 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1D05 1032 H
+P104-101 1BC7 H
+GeForce GTX 1080 1BE0 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1025 1221 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1025 123E H
+GeForce GTX 1080 with Max-Q Design 1BE0 1028 07C0 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1028 0876 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1028 088B H
+GeForce GTX 1080 with Max-Q Design 1BE0 1043 1031 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1043 1BF0 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1458 355B H
+GeForce GTX 1070 1BE1 H
+GeForce GTX 1070 with Max-Q Design 1BE1 103C 84DB H
+GeForce GTX 1070 with Max-Q Design 1BE1 1043 16F0 H
+GeForce GTX 1070 with Max-Q Design 1BE1 3842 2009 H
+GeForce GTX 1060 3GB 1C02 H
+GeForce GTX 1060 6GB 1C03 H
+GeForce GTX 1060 5GB 1C04 H
+GeForce GTX 1060 6GB 1C06 H
+P106-100 1C07 H
+P106-090 1C09 H
+GeForce GTX 1060 1C20 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0802 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0803 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0825 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0827 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0885 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0886 H
+GeForce GTX 1060 with Max-Q Design 1C20 103C 8467 H
+GeForce GTX 1060 with Max-Q Design 1C20 103C 8478 H
+GeForce GTX 1060 with Max-Q Design 1C20 17AA 39B9 H
+GeForce GTX 1060 with Max-Q Design 1C20 1A58 2000 H
+GeForce GTX 1050 Ti 1C21 H
+GeForce GTX 1050 1C22 H
+GeForce GTX 1060 1C60 H
+GeForce GTX 1060 with Max-Q Design 1C60 103C 8390 H
+GeForce GTX 1060 with Max-Q Design 1C60 103C 8467 H
+GeForce GTX 1050 Ti 1C61 H
+GeForce GTX 1050 1C62 H
+GeForce GTX 1050 1C81 H
+GeForce GTX 1050 Ti 1C82 H
+GeForce GTX 1050 1C83 H
+GeForce GTX 1050 Ti 1C8C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 1028 087C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 1462 123C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 17AA 39FF H
+GeForce GTX 1050 1C8D H
+GeForce GTX 1050 with Max-Q Design 1C8D 103C 84E9 H
+GeForce GTX 1050 with Max-Q Design 1C8D 103C 84EB H
+GeForce GTX 1050 with Max-Q Design 1C8D 1D72 1707 H
+GeForce GTX 1050 Ti 1C8F H
+GeForce GT 1030 1D01 H
+GeForce MX150 1D10 H
+GeForce MX150 1D12 H
+TITAN V 1D81 I
+NVIDIA Quadro GPUs
+
+NVIDIA GPU product Device PCI ID* VDPAU features
+Quadro 6000 06D8 C
+Quadro 5000 06D9 C
+Quadro 5000M 06DA C
+Quadro 6000 06DC C
+Quadro 4000 06DD C
+Quadro 2000 0DD8 C
+Quadro 2000D 0DD8 10DE 0914 C
+Quadro 2000M 0DDA C
+Quadro 600 0DF8 C
+Quadro 500M 0DF9 C
+Quadro 1000M 0DFA C
+Quadro 3000M 0E3A C
+Quadro 4000M 0E3B C
+Quadro K420 0FF3 D
+Quadro K1100M 0FF6 D
+Quadro K500M 0FF8 D
+Quadro K2000D 0FF9 D
+Quadro K600 0FFA D
+Quadro K2000M 0FFB D
+Quadro K1000M 0FFC D
+Quadro K2000 0FFE D
+Quadro 410 0FFF D
+Quadro K6000 103A D
+Quadro K5200 103C D
+Quadro 5010M 109A C
+Quadro 7000 109B C
+Quadro K4200 11B4 D
+Quadro K3100M 11B6 D
+Quadro K4100M 11B7 D
+Quadro K5100M 11B8 D
+Quadro K5000 11BA D
+Quadro K5000M 11BC D
+Quadro K4000M 11BD D
+Quadro K3000M 11BE D
+Quadro K4000 11FA D
+Quadro K2100M 11FC D
+Quadro K610M 12B9 D
+Quadro K510M 12BA D
+Quadro K620M 137A 17AA 2225 E
+Quadro M500M 137A 17AA 2232 E
+Quadro M500M 137A 17AA 505A E
+Quadro M520 137B E
+Quadro M2000M 13B0 E
+Quadro M1000M 13B1 E
+Quadro M600M 13B2 E
+Quadro K2200M 13B3 E
+Quadro M620 13B4 E
+Quadro M1200 13B6 E
+Quadro K2200 13BA E
+Quadro K620 13BB E
+Quadro K1200 13BC E
+Quadro M5000 13F0 E
+Quadro M4000 13F1 E
+Quadro M5000M 13F8 E
+Quadro M5000 SE 13F8 10DE 11DD E
+Quadro M4000M 13F9 E
+Quadro M3000M 13FA E
+Quadro M3000 SE 13FA 10DE 11C9 E
+Quadro M5500 13FB E
+Quadro M2000 1430 F
+Quadro GP100 15F0 G
+Quadro M6000 17F0 E
+Quadro M6000 24GB 17F1 E
+Quadro P6000 1B30 H
+Quadro P5000 1BB0 H
+Quadro P4000 1BB1 H
+Quadro P5200 1BB5 H
+Quadro P5000 1BB6 H
+Quadro P4000 1BB7 H
+Quadro P4000 with Max-Q Design 1BB7 1462 11E9 H
+Quadro P4000 with Max-Q Design 1BB7 1558 9501 H
+Quadro P3000 1BB8 H
+Quadro P4200 1BB9 H
+Quadro P3200 1BBB H
+Quadro P2000 1C30 H
+Quadro P1000 1CB1 H
+Quadro P600 1CB2 H
+Quadro P400 1CB3 H
+Quadro P620 1CB6 H
+Quadro P2000 1CBA H
+Quadro P1000 1CBB H
+Quadro P600 1CBC H
+Quadro P500 1D33 H
+Quadro GV100 1DBA I
+NVIDIA NVS GPUs
+
+NVIDIA GPU product Device PCI ID* VDPAU features
+NVS 5400M 0DEF C
+NVS 5200M 0DFC C
+NVS 510 0FFD D
+NVS 4200M 1056 D
+NVS 4200M 1057 D
+NVS 315 107C D
+NVS 310 107D D
+NVS 5200M 1140 1043 10DD C
+NVS 5200M 1140 1043 10ED C
+NVS 5200M 1140 1043 2136 C
+NVS 5200M 1140 144D C0E2 C
+NVS 5200M 1140 144D C0E3 C
+NVS 5200M 1140 144D C0E4 C
+NVS 5200M 1140 17AA 2200 C
+NVS 810 13B9 E
+NVIDIA Tesla GPUs
+
+NVIDIA GPU product Device PCI ID* VDPAU features
+Tesla C2050 / C2070 06D1 C
+Tesla C2050 06D1 10DE 0771 C
+Tesla C2070 06D1 10DE 0772 C
+Tesla M2070 06D2 C
+Tesla X2070 06D2 10DE 088F C
+Tesla T20 Processor 06DE C
+Tesla S2050 06DE 10DE 0773 C
+Tesla M2050 06DE 10DE 082F C
+Tesla X2070 06DE 10DE 0840 C
+Tesla M2050 06DE 10DE 0842 C
+Tesla M2050 06DE 10DE 0846 C
+Tesla M2050 06DE 10DE 0866 C
+Tesla M2050 06DE 10DE 0907 C
+Tesla M2050 06DE 10DE 091E C
+Tesla M2070-Q 06DF C
+Tesla K20Xm 1021 D
+Tesla K20c 1022 D
+Tesla K40m 1023 D
+Tesla K40c 1024 D
+Tesla K20s 1026 D
+Tesla K40st 1027 D
+Tesla K20m 1028 D
+Tesla K40s 1029 D
+Tesla K40t 102A D
+Tesla K80 102D D
+Tesla M2090 1091 C
+Tesla X2090 1091 10DE 088E C
+Tesla X2090 1091 10DE 0891 C
+Tesla X2090 1091 10DE 0974 C
+Tesla X2090 1091 10DE 098D C
+Tesla M2075 1094 C
+Tesla C2075 1096 C
+Tesla C2050 1096 10DE 0911 C
+Tesla K10 118F D
+Tesla K8 1194 D
+Tesla M60 13F2 E
+Tesla M6 13F3 E
+Tesla M4 1431 F
+Quadro M2200 1436 F
+Tesla P100-PCIE-12GB 15F7 G
+Tesla P100-PCIE-16GB 15F8 G
+Tesla P100-SXM2-16GB 15F9 G
+Tesla M40 17FD E
+Tesla M40 24GB 17FD 10DE 1173 E
+Tesla P40 1B38 H
+Tesla P4 1BB3 H
+Tesla P6 1BB4 H
+Tesla V100-SXM2-16GB 1DB1 I
+Tesla V100-FHHL-16GB 1DB3 I
+Tesla V100-PCIE-16GB 1DB4 I
+Tesla V100-SXM2-32GB 1DB5 I
+Tesla V100-PCIE-32GB 1DB6 I
+Tesla V100-DGXS-32GB 1DB7 I
+NVIDIA GRID GPUs
+
+NVIDIA GPU product Device PCI ID* VDPAU features
+GRID K520 118A D
+
diff --git a/abs/core/system-templates/templates/xorg/nvidia_supported.txt b/abs/core/system-templates/templates/xorg/nvidia_supported.txt
index 1ae5758..8beeb99 100644
--- a/abs/core/system-templates/templates/xorg/nvidia_supported.txt
+++ b/abs/core/system-templates/templates/xorg/nvidia_supported.txt
@@ -1,68 +1,7 @@
-#http://us.download.nvidia.com/XFree86/Linux-x86_64/387.22/README/supportedchips.html
+#http://us.download.nvidia.com/XFree86/Linux-x86_64/415.27/README/supportedchips.html
NVIDIA GeForce GPUs
NVIDIA GPU product Device PCI ID* VDPAU features
-GeForce GTX 480 06C0 C
-GeForce GTX 465 06C4 C
-GeForce GTX 480M 06CA C
-GeForce GTX 470 06CD C
-GeForce GT 440 0DC0 C
-GeForce GTS 450 0DC4 C
-GeForce GTS 450 0DC5 C
-GeForce GTS 450 0DC6 C
-GeForce GT 555M 0DCD C
-GeForce GT 555M 0DCE C
-GeForce GTX 460M 0DD1 C
-GeForce GT 445M 0DD2 C
-GeForce GT 435M 0DD3 C
-GeForce GT 550M 0DD6 C
-GeForce GT 440 0DE0 C
-GeForce GT 430 0DE1 C
-GeForce GT 420 0DE2 C
-GeForce GT 635M 0DE3 C
-GeForce GT 520 0DE4 C
-GeForce GT 530 0DE5 C
-GeForce GT 610 0DE7 C
-GeForce GT 620M 0DE8 C
-GeForce GT 630M 0DE9 C
-GeForce GT 620M 0DE9 1025 0692 C
-GeForce GT 620M 0DE9 1025 0725 C
-GeForce GT 620M 0DE9 1025 0728 C
-GeForce GT 620M 0DE9 1025 072B C
-GeForce GT 620M 0DE9 1025 072E C
-GeForce GT 620M 0DE9 1025 0753 C
-GeForce GT 620M 0DE9 1025 0754 C
-GeForce GT 640M LE 0DE9 17AA 3977 C
-GeForce GT 635M 0DE9 1B0A 2210 C
-GeForce 610M 0DEA C
-GeForce 615 0DEA 17AA 365A C
-GeForce 615 0DEA 17AA 365B C
-GeForce 615 0DEA 17AA 365E C
-GeForce 615 0DEA 17AA 3660 C
-GeForce 615 0DEA 17AA 366C C
-GeForce GT 555M 0DEB C
-GeForce GT 525M 0DEC C
-GeForce GT 520M 0DED C
-GeForce GT 415M 0DEE C
-GeForce GT 425M 0DF0 C
-GeForce GT 420M 0DF1 C
-GeForce GT 435M 0DF2 C
-GeForce GT 420M 0DF3 C
-GeForce GT 540M 0DF4 C
-GeForce GT 630M 0DF4 152D 0952 C
-GeForce GT 630M 0DF4 152D 0953 C
-GeForce GT 525M 0DF5 C
-GeForce GT 550M 0DF6 C
-GeForce GT 520M 0DF7 C
-GeForce GTX 460 0E22 C
-GeForce GTX 460 SE 0E23 C
-GeForce GTX 460 0E24 C
-GeForce GTX 470M 0E30 C
-GeForce GTX 485M 0E31 C
-GeForce GT 630 0F00 C
-GeForce GT 620 0F01 C
-GeForce GT 730 0F02 C
-GeForce GT 610 0F03 C
GeForce GT 640 0FC0 C
GeForce GT 640 0FC1 C
GeForce GT 630 0FC2 C
@@ -100,387 +39,6 @@ GeForce GTX 780 1007 D
GeForce GTX 780 Ti 1008 D
GeForce GTX 780 Ti 100A D
GeForce GTX TITAN Black 100C D
-GeForce GT 520 1040 C
-GeForce 510 1042 D
-GeForce 605 1048 D
-GeForce GT 620 1049 C
-GeForce GT 610 104A C
-GeForce GT 625 (OEM) 104B D
-GeForce GT 625 104B 1043 844C D
-GeForce GT 625 104B 1043 846B D
-GeForce GT 625 104B 1462 B590 D
-GeForce GT 625 104B 174B 0625 D
-GeForce GT 625 104B 174B A625 D
-GeForce GT 705 104C D
-GeForce GT 520M 1050 C
-GeForce GT 520MX 1051 D
-GeForce GT 520M 1052 C
-GeForce 410M 1054 D
-GeForce 410M 1055 D
-GeForce 610M 1058 C
-GeForce 610 1058 103C 2AF1 D
-GeForce 800A 1058 17AA 3682 D
-GeForce 705A 1058 17AA 3692 C
-GeForce 800A 1058 17AA 3695 D
-GeForce 800A 1058 17AA 36A8 D
-GeForce 800A 1058 17AA 36AC D
-GeForce 800A 1058 17AA 36AD D
-GeForce 800A 1058 705A 3682 D
-GeForce 610M 1059 C
-GeForce 610M 105A C
-GeForce 705M 105B C
-GeForce 705A 105B 103C 2AFB C
-GeForce 800A 105B 17AA 30B1 D
-GeForce 705A 105B 17AA 30F3 C
-GeForce 800A 105B 17AA 36A1 D
-GeForce GTX 580 1080 C
-GeForce GTX 570 1081 C
-GeForce GTX 560 Ti 1082 C
-GeForce GTX 560 1084 C
-GeForce GTX 570 1086 C
-GeForce GTX 560 Ti 1087 C
-GeForce GTX 590 1088 C
-GeForce GTX 580 1089 C
-GeForce GTX 580 108B C
-GeForce 820M 1140 1019 0799 C
-GeForce GT 720M 1140 1019 999F C
-GeForce GT 620M 1140 1025 0600 C
-GeForce GT 620M 1140 1025 0606 C
-GeForce GT 620M 1140 1025 064A C
-GeForce GT 620M 1140 1025 064C C
-GeForce GT 620M 1140 1025 067A C
-GeForce GT 620M 1140 1025 0680 C
-GeForce 710M 1140 1025 0686 C
-GeForce 710M 1140 1025 0689 C
-GeForce 710M 1140 1025 068B C
-GeForce 710M 1140 1025 068D C
-GeForce 710M 1140 1025 068E C
-GeForce 710M 1140 1025 0691 C
-GeForce GT 620M 1140 1025 0692 C
-GeForce GT 620M 1140 1025 0694 C
-GeForce GT 620M 1140 1025 0702 C
-GeForce GT 620M 1140 1025 0719 C
-GeForce GT 620M 1140 1025 0725 C
-GeForce GT 620M 1140 1025 0728 C
-GeForce GT 620M 1140 1025 072B C
-GeForce GT 620M 1140 1025 072E C
-GeForce GT 620M 1140 1025 0732 C
-GeForce GT 720M 1140 1025 0763 C
-GeForce 710M 1140 1025 0773 C
-GeForce 710M 1140 1025 0774 C
-GeForce GT 720M 1140 1025 0776 C
-GeForce 710M 1140 1025 077A C
-GeForce 710M 1140 1025 077B C
-GeForce 710M 1140 1025 077C C
-GeForce 710M 1140 1025 077D C
-GeForce 710M 1140 1025 077E C
-GeForce 710M 1140 1025 077F C
-GeForce GT 720M 1140 1025 0781 C
-GeForce GT 720M 1140 1025 0798 C
-GeForce GT 720M 1140 1025 0799 C
-GeForce GT 720M 1140 1025 079B C
-GeForce GT 720M 1140 1025 079C C
-GeForce GT 720M 1140 1025 0807 C
-GeForce 820M 1140 1025 0821 C
-GeForce GT 720M 1140 1025 0823 C
-GeForce GT 720M 1140 1025 0830 C
-GeForce GT 720M 1140 1025 0833 C
-GeForce GT 720M 1140 1025 0837 C
-GeForce 820M 1140 1025 083E C
-GeForce 710M 1140 1025 0841 C
-GeForce 820M 1140 1025 0853 C
-GeForce 820M 1140 1025 0854 C
-GeForce 820M 1140 1025 0855 C
-GeForce 820M 1140 1025 0856 C
-GeForce 820M 1140 1025 0857 C
-GeForce 820M 1140 1025 0858 C
-GeForce 820M 1140 1025 0863 C
-GeForce 820M 1140 1025 0868 C
-GeForce 810M 1140 1025 0869 C
-GeForce 820M 1140 1025 0873 C
-GeForce 820M 1140 1025 0878 C
-GeForce 820M 1140 1025 087B C
-GeForce 820M 1140 1025 087F C
-GeForce 820M 1140 1025 0881 C
-GeForce 820M 1140 1025 0885 C
-GeForce 820M 1140 1025 088A C
-GeForce 820M 1140 1025 089B C
-GeForce 820M 1140 1025 0921 C
-GeForce 810M 1140 1025 092E C
-GeForce 820M 1140 1025 092F C
-GeForce 820M 1140 1025 0932 C
-GeForce 820M 1140 1025 093A C
-GeForce 820M 1140 1025 093C C
-GeForce 820M 1140 1025 093F C
-GeForce 820M 1140 1025 0941 C
-GeForce 820M 1140 1025 0945 C
-GeForce 820M 1140 1025 0954 C
-GeForce 820M 1140 1025 0965 C
-GeForce GT 630M 1140 1028 054D C
-GeForce GT 630M 1140 1028 054E C
-GeForce GT 620M 1140 1028 0554 C
-GeForce GT 620M 1140 1028 0557 C
-GeForce GT 625M 1140 1028 0562 C
-GeForce GT 630M 1140 1028 0565 C
-GeForce GT 630M 1140 1028 0568 C
-GeForce GT 630M 1140 1028 0590 C
-GeForce GT 625M 1140 1028 0592 C
-GeForce GT 625M 1140 1028 0594 C
-GeForce GT 625M 1140 1028 0595 C
-GeForce GT 625M 1140 1028 05A2 C
-GeForce GT 625M 1140 1028 05B1 C
-GeForce GT 625M 1140 1028 05B3 C
-GeForce GT 630M 1140 1028 05DA C
-GeForce GT 720M 1140 1028 05DE C
-GeForce GT 720M 1140 1028 05E0 C
-GeForce GT 630M 1140 1028 05E8 C
-GeForce GT 720M 1140 1028 05F4 C
-GeForce GT 720M 1140 1028 060F C
-GeForce GT 720M 1140 1028 062F C
-GeForce 820M 1140 1028 064E C
-GeForce 820M 1140 1028 0652 C
-GeForce 820M 1140 1028 0653 C
-GeForce 820M 1140 1028 0655 C
-GeForce 820M 1140 1028 065E C
-GeForce 820M 1140 1028 0662 C
-GeForce 820M 1140 1028 068D C
-GeForce 820M 1140 1028 06AD C
-GeForce 820M 1140 1028 06AE C
-GeForce 820M 1140 1028 06AF C
-GeForce 820M 1140 1028 06B0 C
-GeForce 820M 1140 1028 06C0 C
-GeForce 820M 1140 1028 06C1 C
-GeForce GT 630M 1140 103C 18EF C
-GeForce GT 630M 1140 103C 18F9 C
-GeForce GT 630M 1140 103C 18FB C
-GeForce GT 630M 1140 103C 18FD C
-GeForce GT 630M 1140 103C 18FF C
-GeForce 820M 1140 103C 218A C
-GeForce 820M 1140 103C 21BB C
-GeForce 820M 1140 103C 21BC C
-GeForce 820M 1140 103C 220E C
-GeForce 820M 1140 103C 2210 C
-GeForce 820M 1140 103C 2212 C
-GeForce 820M 1140 103C 2214 C
-GeForce 820M 1140 103C 2218 C
-GeForce 820M 1140 103C 225B C
-GeForce 820M 1140 103C 225D C
-GeForce 820M 1140 103C 226D C
-GeForce 820M 1140 103C 226F C
-GeForce 820M 1140 103C 22D2 C
-GeForce 820M 1140 103C 22D9 C
-GeForce 820M 1140 103C 2335 C
-GeForce 820M 1140 103C 2337 C
-GeForce GT 720A 1140 103C 2AEF C
-GeForce 710A 1140 103C 2AF9 C
-GeForce GT 720M 1140 1043 11FD C
-GeForce GT 720M 1140 1043 124D C
-GeForce GT 720M 1140 1043 126D C
-GeForce GT 720M 1140 1043 131D C
-GeForce GT 720M 1140 1043 13FD C
-GeForce GT 720M 1140 1043 14C7 C
-GeForce GT 620M 1140 1043 1507 C
-GeForce 820M 1140 1043 15AD C
-GeForce 820M 1140 1043 15ED C
-GeForce 820M 1140 1043 160D C
-GeForce 820M 1140 1043 163D C
-GeForce 820M 1140 1043 165D C
-GeForce 820M 1140 1043 166D C
-GeForce 820M 1140 1043 16CD C
-GeForce 820M 1140 1043 16DD C
-GeForce 820M 1140 1043 170D C
-GeForce 820M 1140 1043 176D C
-GeForce 820M 1140 1043 178D C
-GeForce 820M 1140 1043 179D C
-GeForce GT 620M 1140 1043 2132 C
-GeForce GT 720M 1140 1043 21BA C
-GeForce GT 720M 1140 1043 21FA C
-GeForce GT 720M 1140 1043 220A C
-GeForce GT 720M 1140 1043 221A C
-GeForce GT 710M 1140 1043 223A C
-GeForce GT 710M 1140 1043 224A C
-GeForce 820M 1140 1043 227A C
-GeForce 820M 1140 1043 228A C
-GeForce 820M 1140 1043 22FA C
-GeForce 820M 1140 1043 232A C
-GeForce 820M 1140 1043 233A C
-GeForce 820M 1140 1043 235A C
-GeForce 820M 1140 1043 236A C
-GeForce 820M 1140 1043 238A C
-GeForce GT 720M 1140 1043 8595 C
-GeForce GT 720M 1140 1043 85EA C
-GeForce 820M 1140 1043 85EB C
-GeForce 820M 1140 1043 85EC C
-GeForce GT 720M 1140 1043 85EE C
-GeForce 820M 1140 1043 85F3 C
-GeForce 820M 1140 1043 860E C
-GeForce 820M 1140 1043 861A C
-GeForce 820M 1140 1043 861B C
-GeForce 820M 1140 1043 8628 C
-GeForce 820M 1140 1043 8643 C
-GeForce 820M 1140 1043 864C C
-GeForce 820M 1140 1043 8652 C
-GeForce 820M 1140 1043 8660 C
-GeForce 820M 1140 1043 8661 C
-GeForce GT 720M 1140 105B 0DAC C
-GeForce GT 720M 1140 105B 0DAD C
-GeForce GT 720M 1140 105B 0EF3 C
-GeForce GT 720M 1140 10CF 17F5 C
-GeForce 710M 1140 1179 FA01 C
-GeForce 710M 1140 1179 FA02 C
-GeForce 710M 1140 1179 FA03 C
-GeForce 710M 1140 1179 FA05 C
-GeForce 710M 1140 1179 FA11 C
-GeForce 710M 1140 1179 FA13 C
-GeForce 710M 1140 1179 FA18 C
-GeForce 710M 1140 1179 FA19 C
-GeForce 710M 1140 1179 FA21 C
-GeForce 710M 1140 1179 FA23 C
-GeForce 710M 1140 1179 FA2A C
-GeForce 710M 1140 1179 FA32 C
-GeForce 710M 1140 1179 FA33 C
-GeForce 710M 1140 1179 FA36 C
-GeForce 710M 1140 1179 FA38 C
-GeForce 710M 1140 1179 FA42 C
-GeForce 710M 1140 1179 FA43 C
-GeForce 710M 1140 1179 FA45 C
-GeForce 710M 1140 1179 FA47 C
-GeForce 710M 1140 1179 FA49 C
-GeForce 710M 1140 1179 FA58 C
-GeForce 710M 1140 1179 FA59 C
-GeForce 710M 1140 1179 FA88 C
-GeForce 710M 1140 1179 FA89 C
-GeForce GT 620M 1140 144D B092 C
-GeForce GT 630M 1140 144D C0D5 C
-GeForce GT 620M 1140 144D C0D7 C
-GeForce 820M 1140 144D C10D C
-GeForce GT 620M 1140 144D C652 C
-GeForce 710M 1140 144D C709 C
-GeForce 710M 1140 144D C711 C
-GeForce 710M 1140 144D C736 C
-GeForce 710M 1140 144D C737 C
-GeForce 820M 1140 144D C745 C
-GeForce 820M 1140 144D C750 C
-GeForce GT 710M 1140 1462 10B8 C
-GeForce GT 720M 1140 1462 10E9 C
-GeForce 820M 1140 1462 1116 C
-GeForce 720M 1140 1462 AA33 C
-GeForce GT 720M 1140 1462 AAA2 C
-GeForce 820M 1140 1462 AAA3 C
-GeForce GT 720M 1140 1462 ACB2 C
-GeForce GT 720M 1140 1462 ACC1 C
-GeForce 720M 1140 1462 AE61 C
-GeForce GT 720M 1140 1462 AE65 C
-GeForce 820M 1140 1462 AE6A C
-GeForce GT 720M 1140 1462 AE71 C
-GeForce 820M 1140 14C0 0083 C
-GeForce 620M 1140 152D 0926 C
-GeForce GT 630M 1140 152D 0982 C
-GeForce GT 630M 1140 152D 0983 C
-GeForce GT 820M 1140 152D 1005 C
-GeForce 710M 1140 152D 1012 C
-GeForce 820M 1140 152D 1019 C
-GeForce GT 630M 1140 152D 1030 C
-GeForce 710M 1140 152D 1055 C
-GeForce GT 720M 1140 152D 1067 C
-GeForce 820M 1140 152D 1092 C
-GeForce GT 720M 1140 17AA 2213 C
-GeForce GT 720M 1140 17AA 2220 C
-GeForce GT 720A 1140 17AA 309C C
-GeForce 820A 1140 17AA 30B4 C
-GeForce 720A 1140 17AA 30B7 C
-GeForce 820A 1140 17AA 30E4 C
-GeForce 820A 1140 17AA 361B C
-GeForce 820A 1140 17AA 361C C
-GeForce 820A 1140 17AA 361D C
-GeForce GT 620M 1140 17AA 3656 C
-GeForce 705M 1140 17AA 365A C
-GeForce 800M 1140 17AA 365E C
-GeForce 820A 1140 17AA 3661 C
-GeForce 800M 1140 17AA 366C C
-GeForce 800M 1140 17AA 3685 C
-GeForce 800M 1140 17AA 3686 C
-GeForce 705A 1140 17AA 3687 C
-GeForce 820A 1140 17AA 3696 C
-GeForce 820A 1140 17AA 369B C
-GeForce 820A 1140 17AA 369C C
-GeForce 820A 1140 17AA 369D C
-GeForce 820A 1140 17AA 369E C
-GeForce 820A 1140 17AA 36A6 C
-GeForce 820A 1140 17AA 36A7 C
-GeForce 820A 1140 17AA 36A9 C
-GeForce 820A 1140 17AA 36AF C
-GeForce 820A 1140 17AA 36B0 C
-GeForce 820A 1140 17AA 36B6 C
-GeForce GT 720M 1140 17AA 3800 C
-GeForce GT 720M 1140 17AA 3801 C
-GeForce GT 720M 1140 17AA 3802 C
-GeForce GT 720M 1140 17AA 3803 C
-GeForce GT 720M 1140 17AA 3804 C
-GeForce GT 720M 1140 17AA 3806 C
-GeForce GT 720M 1140 17AA 3808 C
-GeForce GT 820M 1140 17AA 380D C
-GeForce GT 820M 1140 17AA 380E C
-GeForce GT 820M 1140 17AA 380F C
-GeForce GT 820M 1140 17AA 3811 C
-GeForce 820M 1140 17AA 3812 C
-GeForce 820M 1140 17AA 3813 C
-GeForce 820M 1140 17AA 3816 C
-GeForce 820M 1140 17AA 3817 C
-GeForce 820M 1140 17AA 3818 C
-GeForce 820M 1140 17AA 381A C
-GeForce 820M 1140 17AA 381C C
-GeForce 820M 1140 17AA 381D C
-GeForce 610M 1140 17AA 3901 C
-GeForce 710M 1140 17AA 3902 C
-GeForce 710M 1140 17AA 3903 C
-GeForce GT 625M 1140 17AA 3904 C
-GeForce GT 720M 1140 17AA 3905 C
-GeForce 820M 1140 17AA 3907 C
-GeForce GT 720M 1140 17AA 3910 C
-GeForce GT 720M 1140 17AA 3912 C
-GeForce 820M 1140 17AA 3913 C
-GeForce 820M 1140 17AA 3915 C
-GeForce 610M 1140 17AA 3983 C
-GeForce 610M 1140 17AA 5001 C
-GeForce GT 720M 1140 17AA 5003 C
-GeForce 705M 1140 17AA 5005 C
-GeForce GT 620M 1140 17AA 500D C
-GeForce 710M 1140 17AA 5014 C
-GeForce 710M 1140 17AA 5017 C
-GeForce 710M 1140 17AA 5019 C
-GeForce 710M 1140 17AA 501A C
-GeForce GT 720M 1140 17AA 501F C
-GeForce 710M 1140 17AA 5025 C
-GeForce 710M 1140 17AA 5027 C
-GeForce 710M 1140 17AA 502A C
-GeForce GT 720M 1140 17AA 502B C
-GeForce 710M 1140 17AA 502D C
-GeForce GT 720M 1140 17AA 502E C
-GeForce GT 720M 1140 17AA 502F C
-GeForce 705M 1140 17AA 5030 C
-GeForce 705M 1140 17AA 5031 C
-GeForce 820M 1140 17AA 5032 C
-GeForce 820M 1140 17AA 5033 C
-GeForce 710M 1140 17AA 503E C
-GeForce 820M 1140 17AA 503F C
-GeForce 820M 1140 17AA 5040 C
-GeForce 710M 1140 1854 0177 C
-GeForce 710M 1140 1854 0180 C
-GeForce GT 720M 1140 1854 0190 C
-GeForce GT 720M 1140 1854 0192 C
-GeForce 820M 1140 1854 0224 C
-GeForce 820M 1140 1B0A 01C0 C
-GeForce GT 620M 1140 1B0A 20DD C
-GeForce GT 620M 1140 1B0A 20DF C
-GeForce 820M 1140 1B0A 210E C
-GeForce GT 720M 1140 1B0A 2202 C
-GeForce 820M 1140 1B0A 90D7 C
-GeForce 820M 1140 1B0A 90DD C
-GeForce 820M 1140 1B50 5530 C
-GeForce GT 720M 1140 1B6C 5031 C
-GeForce 820M 1140 1BAB 0106 C
-GeForce 810M 1140 1D05 1013 C
GeForce GTX 680 1180 D
GeForce GTX 660 Ti 1183 D
GeForce GTX 770 1184 D
@@ -518,32 +76,6 @@ GeForce GTX 765M 11E1 D
GeForce GTX 765M 11E2 D
GeForce GTX 760M 11E3 D
GeForce GTX 760A 11E3 17AA 3683 D
-GeForce GTX 560 Ti 1200 C
-GeForce GTX 560 1201 C
-GeForce GTX 460 SE v2 1203 C
-GeForce GTX 460 v2 1205 C
-GeForce GTX 555 1206 C
-GeForce GT 645 1207 C
-GeForce GTX 560 SE 1208 C
-GeForce GTX 570M 1210 C
-GeForce GTX 580M 1211 C
-GeForce GTX 675M 1212 C
-GeForce GTX 670M 1213 C
-GeForce GT 545 1241 C
-GeForce GT 545 1243 C
-GeForce GTX 550 Ti 1244 C
-GeForce GTS 450 1245 C
-GeForce GT 550M 1246 C
-GeForce GT 555M 1247 C
-GeForce GT 635M 1247 1043 212A C
-GeForce GT 635M 1247 1043 212B C
-GeForce GT 635M 1247 1043 212C C
-GeForce GT 555M 1248 C
-GeForce GTS 450 1249 C
-GeForce GT 640 124B C
-GeForce GT 555M 124D C
-GeForce GT 635M 124D 1462 10CC C
-GeForce GTX 560M 1251 C
GeForce GT 635 1280 D
GeForce GT 710 1281 D
GeForce GT 640 1282 C
@@ -683,24 +215,41 @@ GeForce GTX 1080 Ti 1B06 H
GeForce GTX 1080 1B80 H
GeForce GTX 1070 1B81 H
GeForce GTX 1070 Ti 1B82 H
+GeForce GTX 1060 6GB 1B83 H
GeForce GTX 1060 3GB 1B84 H
P104-100 1B87 H
GeForce GTX 1080 1BA0 H
+GeForce GTX 1080 with Max-Q Design 1BA0 1028 0887 H
GeForce GTX 1070 1BA1 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1028 08A1 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1028 08A2 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1043 1CCE H
GeForce GTX 1070 with MaxQ Design 1BA1 1458 1651 H
+GeForce GTX 1070 With Max-Q Design 1BA1 1458 1653 H
GeForce GTX 1070 with Max-Q Design 1BA1 1462 11E8 H
GeForce GTX 1070 with Max-Q Design 1BA1 1462 11E9 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1225 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1226 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1462 1227 H
GeForce GTX 1070 with Max-Q Design 1BA1 1558 9501 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1558 95E1 H
+GeForce GTX 1070 with Max-Q Design 1BA1 1A58 2000 H
GeForce GTX 1070 with Max-Q Design 1BA1 1D05 1032 H
+GeForce GTX 1070 1BA2 H
P104-101 1BC7 H
GeForce GTX 1080 1BE0 H
GeForce GTX 1080 with Max-Q Design 1BE0 1025 1221 H
GeForce GTX 1080 with Max-Q Design 1BE0 1025 123E H
GeForce GTX 1080 with Max-Q Design 1BE0 1028 07C0 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1028 0876 H
+GeForce GTX 1080 with Max-Q Design 1BE0 1028 088B H
+GeForce GTX 1080 with Max-Q Design 1BE0 1043 1031 H
GeForce GTX 1080 with Max-Q Design 1BE0 1043 1BF0 H
GeForce GTX 1080 with Max-Q Design 1BE0 1458 355B H
GeForce GTX 1070 1BE1 H
+GeForce GTX 1070 with Max-Q Design 1BE1 103C 84DB H
GeForce GTX 1070 with Max-Q Design 1BE1 1043 16F0 H
+GeForce GTX 1070 with Max-Q Design 1BE1 3842 2009 H
GeForce GTX 1060 3GB 1C02 H
GeForce GTX 1060 6GB 1C03 H
GeForce GTX 1060 5GB 1C04 H
@@ -710,37 +259,69 @@ P106-090 1C09 H
GeForce GTX 1060 1C20 H
GeForce GTX 1060 with Max-Q Design 1C20 1028 0802 H
GeForce GTX 1060 with Max-Q Design 1C20 1028 0803 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0825 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0827 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0885 H
+GeForce GTX 1060 with Max-Q Design 1C20 1028 0886 H
+GeForce GTX 1060 with Max-Q Design 1C20 103C 8467 H
+GeForce GTX 1060 with Max-Q Design 1C20 103C 8478 H
+GeForce GTX 1060 with Max-Q Design 1C20 103C 8581 H
+GeForce GTX 1060 with Max-Q Design 1C20 1462 1244 H
+GeForce GTX 1060 with Max-Q Design 1C20 1558 95E5 H
GeForce GTX 1060 with Max-Q Design 1C20 17AA 39B9 H
+GeForce GTX 1060 with Max-Q Design 1C20 1A58 2000 H
+GeForce GTX 1060 with Max-Q Design 1C20 1A58 2001 H
+GeForce GTX 1060 with Max-Q Design 1C20 1D05 1059 H
GeForce GTX 1050 Ti 1C21 H
GeForce GTX 1050 1C22 H
+GeForce GTX 1060 1C23 H
GeForce GTX 1060 1C60 H
GeForce GTX 1060 with Max-Q Design 1C60 103C 8390 H
+GeForce GTX 1060 with Max-Q Design 1C60 103C 8467 H
GeForce GTX 1050 Ti 1C61 H
GeForce GTX 1050 1C62 H
GeForce GTX 1050 1C81 H
GeForce GTX 1050 Ti 1C82 H
+GeForce GTX 1050 1C83 H
GeForce GTX 1050 Ti 1C8C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 1028 087C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 103C 8519 H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 103C 856A H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 1462 123C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 17AA 2266 H
+GeForce GTX 1050 Ti with Max-Q Design 1C8C 17AA 2267 H
GeForce GTX 1050 Ti with Max-Q Design 1C8C 17AA 39FF H
GeForce GTX 1050 1C8D H
+GeForce GTX 1050 with Max-Q Design 1C8D 103C 84E9 H
+GeForce GTX 1050 with Max-Q Design 1C8D 103C 84EB H
+GeForce GTX 1050 with Max-Q Design 1C8D 103C 856A H
+GeForce GTX 1050 with Max-Q Design 1C8D 1043 1341 H
+GeForce GTX 1050 with Max-Q Design 1C8D 1043 1351 H
+GeForce GTX 1050 with Max-Q Design 1C8D 1043 1481 H
+GeForce GTX 1050 with Max-Q Design 1C8D 1043 14A1 H
+GeForce GTX 1050 with Max-Q Design 1C8D 1043 1B5E H
+GeForce GTX 1050 with Max-Q Design 1C8D 1D72 1707 H
+GeForce GTX 1050 Ti 1C8F H
+GeForce GTX 1050 Ti with Max-Q Design 1C8F 1462 123C H
+GeForce GTX 1050 Ti with Max-Q Design 1C8F 1462 126D H
+GeForce GTX 1050 1C92 H
+GeForce GTX 1050 With Max-Q Design 1C92 1462 1245 H
GeForce GT 1030 1D01 H
GeForce MX150 1D10 H
GeForce MX150 1D12 H
-
+TITAN V 1D81 I
+TITAN V JHH Special Edition 1DBA 10DE 12EB I
+TITAN RTX 1E02 J
+GeForce RTX 2080 Ti 1E04 J
+GeForce RTX 2080 Ti 1E07 J
+GeForce RTX 2080 1E82 J
+GeForce RTX 2080 1E87 J
+GeForce RTX 2070 1F02 J
+GeForce RTX 2070 1F07 J
+GeForce RTX 2060 1F08 J
NVIDIA Quadro GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
-Quadro 6000 06D8 C
-Quadro 5000 06D9 C
-Quadro 5000M 06DA C
-Quadro 6000 06DC C
-Quadro 4000 06DD C
-Quadro 2000 0DD8 C
-Quadro 2000D 0DD8 10DE 0914 C
-Quadro 2000M 0DDA C
-Quadro 600 0DF8 C
-Quadro 500M 0DF9 C
-Quadro 1000M 0DFA C
-Quadro 3000M 0E3A C
-Quadro 4000M 0E3B C
Quadro K420 0FF3 D
Quadro K1100M 0FF6 D
Quadro K500M 0FF8 D
@@ -752,8 +333,6 @@ Quadro K2000 0FFE D
Quadro 410 0FFF D
Quadro K6000 103A D
Quadro K5200 103C D
-Quadro 5010M 109A C
-Quadro 7000 109B C
Quadro K4200 11B4 D
Quadro K3100M 11B6 D
Quadro K4100M 11B7 D
@@ -795,53 +374,44 @@ Quadro P6000 1B30 H
Quadro P5000 1BB0 H
Quadro P4000 1BB1 H
Quadro P5200 1BB5 H
+Quadro P5200 with Max-Q Design 1BB5 17AA 2268 H
+Quadro P5200 with Max-Q Design 1BB5 17AA 2269 H
Quadro P5000 1BB6 H
Quadro P4000 1BB7 H
Quadro P4000 with Max-Q Design 1BB7 1462 11E9 H
Quadro P4000 with Max-Q Design 1BB7 1558 9501 H
Quadro P3000 1BB8 H
+Quadro P4200 1BB9 H
+Quadro P4200 with Max-Q Design 1BB9 1558 95E1 H
+Quadro P4200 with Max-Q Design 1BB9 17AA 2268 H
+Quadro P4200 with Max-Q Design 1BB9 17AA 2269 H
+Quadro P3200 1BBB H
+Quadro P3200 with Max-Q Design 1BBB 17AA 225F H
+Quadro P3200 with Max-Q Design 1BBB 17AA 2262 H
Quadro P2000 1C30 H
Quadro P1000 1CB1 H
Quadro P600 1CB2 H
Quadro P400 1CB3 H
Quadro P620 1CB6 H
+Quadro P2000 1CBA H
+Quadro P2000 with Max-Q Design 1CBA 17AA 2266 H
+Quadro P2000 with Max-Q Design 1CBA 17AA 2267 H
+Quadro P1000 1CBB H
+Quadro P600 1CBC H
Quadro P500 1D33 H
-
+Quadro GV100 1DBA I
+Quadro RTX 6000 1E30 J
+Quadro RTX 8000 1E30 10DE 129E J
+Quadro RTX 5000 1EB0 J
+Quadro RTX 4000 1EB1 J
NVIDIA NVS GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
-NVS 5400M 0DEF C
-NVS 5200M 0DFC C
NVS 510 0FFD D
-NVS 4200M 1056 D
-NVS 4200M 1057 D
-NVS 315 107C D
-NVS 310 107D D
-NVS 5200M 1140 1043 10DD C
-NVS 5200M 1140 1043 10ED C
-NVS 5200M 1140 1043 2136 C
-NVS 5200M 1140 144D C0E2 C
-NVS 5200M 1140 144D C0E3 C
-NVS 5200M 1140 144D C0E4 C
-NVS 5200M 1140 17AA 2200 C
NVS 810 13B9 E
-
NVIDIA Tesla GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
-Tesla C2050 / C2070 06D1 C
-Tesla C2050 06D1 10DE 0771 C
-Tesla C2070 06D1 10DE 0772 C
-Tesla M2070 06D2 C
-Tesla X2070 06D2 10DE 088F C
-Tesla T20 Processor 06DE C
-Tesla S2050 06DE 10DE 0773 C
-Tesla M2050 06DE 10DE 082F C
-Tesla X2070 06DE 10DE 0840 C
-Tesla M2050 06DE 10DE 0842 C
-Tesla M2050 06DE 10DE 0846 C
-Tesla M2050 06DE 10DE 0866 C
-Tesla M2050 06DE 10DE 0907 C
-Tesla M2050 06DE 10DE 091E C
-Tesla M2070-Q 06DF C
Tesla K20Xm 1021 D
Tesla K20c 1022 D
Tesla K40m 1023 D
@@ -852,14 +422,6 @@ Tesla K20m 1028 D
Tesla K40s 1029 D
Tesla K40t 102A D
Tesla K80 102D D
-Tesla M2090 1091 C
-Tesla X2090 1091 10DE 088E C
-Tesla X2090 1091 10DE 0891 C
-Tesla X2090 1091 10DE 0974 C
-Tesla X2090 1091 10DE 098D C
-Tesla M2075 1094 C
-Tesla C2075 1096 C
-Tesla C2050 1096 10DE 0911 C
Tesla K10 118F D
Tesla K8 1194 D
Tesla M60 13F2 E
@@ -874,7 +436,20 @@ Tesla M40 24GB 17FD 10DE 1173 E
Tesla P40 1B38 H
Tesla P4 1BB3 H
Tesla P6 1BB4 H
-
+Tesla V100-SXM2-16GB 1DB1 I
+Tesla V100-SXM2-16GB-LS 1DB1 10DE 1307 I
+Tesla V100-FHHL-16GB 1DB3 I
+Tesla V100-PCIE-16GB 1DB4 I
+Tesla V100-PCIE-16GB-LS 1DB4 10DE 1306 I
+Tesla V100-SXM2-32GB 1DB5 I
+Tesla V100-SXM2-32GB-LS 1DB5 10DE 1308 I
+Tesla V100-PCIE-32GB 1DB6 I
+Tesla V100-DGXS-32GB 1DB7 I
+Tesla V100-SXM3-32GB 1DB8 I
+Tesla V100-SXM2-16GB 1DF5 I
+Tesla T4 1EB8 J
NVIDIA GRID GPUs
+
NVIDIA GPU product Device PCI ID* VDPAU features
GRID K520 118A D
+
diff --git a/abs/core/wget/PKGBUILD b/abs/core/wget/PKGBUILD
index fa01ffb..65fd903 100644
--- a/abs/core/wget/PKGBUILD
+++ b/abs/core/wget/PKGBUILD
@@ -2,18 +2,18 @@
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=wget
-pkgver=1.19.4
-pkgrel=1
+pkgver=1.20.1
+pkgrel=3
pkgdesc='Network utility to retrieve files from the Web'
url='https://www.gnu.org/software/wget/wget.html'
arch=('x86_64')
license=('GPL3')
-depends=('gnutls' 'libidn' 'libutil-linux' 'libpsl' 'pcre')
+depends=('glibc' 'gnutls' 'libidn2' 'libutil-linux' 'libpsl' 'pcre2')
checkdepends=('perl-http-daemon' 'perl-io-socket-ssl' 'python')
optdepends=('ca-certificates: HTTPS downloads')
backup=('etc/wgetrc')
source=(https://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.lz{,.sig})
-sha256sums=('2fc0ffb965a8dc8f1e4a89cbe834c0ae7b9c22f559ebafc84c7874ad1866559a'
+sha256sums=('0f63e84dd23dc53ab3ab6f483c3afff8301e54c165783f772101cdd9b1c64928'
'SKIP')
validpgpkeys=('AC404C1C0BF735C63FF4D562263D6DF2E163E1EA'
'7845120B07CBD8D6ECE5FF2B2A1743EDA91A35B6'
diff --git a/abs/core/wpa_supplicant/0009-WPA-Ignore-unauthenticated-encrypted-EAPOL-Key-data.patch b/abs/core/wpa_supplicant/0009-WPA-Ignore-unauthenticated-encrypted-EAPOL-Key-data.patch
new file mode 100644
index 0000000..a62b52c
--- /dev/null
+++ b/abs/core/wpa_supplicant/0009-WPA-Ignore-unauthenticated-encrypted-EAPOL-Key-data.patch
@@ -0,0 +1,44 @@
+From 3e34cfdff6b192fe337c6fb3f487f73e96582961 Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Sun, 15 Jul 2018 01:25:53 +0200
+Subject: [PATCH] WPA: Ignore unauthenticated encrypted EAPOL-Key data
+
+Ignore unauthenticated encrypted EAPOL-Key data in supplicant
+processing. When using WPA2, these are frames that have the Encrypted
+flag set, but not the MIC flag.
+
+When using WPA2, EAPOL-Key frames that had the Encrypted flag set but
+not the MIC flag, had their data field decrypted without first verifying
+the MIC. In case the data field was encrypted using RC4 (i.e., when
+negotiating TKIP as the pairwise cipher), this meant that
+unauthenticated but decrypted data would then be processed. An adversary
+could abuse this as a decryption oracle to recover sensitive information
+in the data field of EAPOL-Key messages (e.g., the group key).
+(CVE-2018-14526)
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/rsn_supp/wpa.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff -upr wpa_supplicant-2.6.orig/src/rsn_supp/wpa.c wpa_supplicant-2.6/src/rsn_supp/wpa.c
+--- wpa_supplicant-2.6.orig/src/rsn_supp/wpa.c 2016-10-02 21:51:11.000000000 +0300
++++ wpa_supplicant-2.6/src/rsn_supp/wpa.c 2018-08-08 16:55:11.506831029 +0300
+@@ -2016,6 +2016,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, c
+
+ if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) &&
+ (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {
++ /*
++ * Only decrypt the Key Data field if the frame's authenticity
++ * was verified. When using AES-SIV (FILS), the MIC flag is not
++ * set, so this check should only be performed if mic_len != 0
++ * which is the case in this code branch.
++ */
++ if (!(key_info & WPA_KEY_INFO_MIC)) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Ignore EAPOL-Key with encrypted but unauthenticated data");
++ goto out;
++ }
+ if (wpa_supplicant_decrypt_key_data(sm, key, ver, key_data,
+ &key_data_len))
+ goto out;
diff --git a/abs/core/wpa_supplicant/PKGBUILD b/abs/core/wpa_supplicant/PKGBUILD
index 4b97114..e46f664 100644
--- a/abs/core/wpa_supplicant/PKGBUILD
+++ b/abs/core/wpa_supplicant/PKGBUILD
@@ -1,11 +1,10 @@
-# $Id$
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Thomas Bächler <thomas@archlinux.org>
pkgname=wpa_supplicant
pkgver=2.6
-pkgrel=11
-epoch=1
+pkgrel=2
+epoch=2
pkgdesc='A utility providing key negotiation for WPA wireless networks'
url='http://hostap.epitest.fi/wpa_supplicant'
arch=(x86_64)
@@ -22,6 +21,7 @@ source=(https://w1.fi/releases/${pkgname}-${pkgver}.tar.gz{,.asc}
0006-TDLS-Reject-TPK-TK-reconfiguration.patch
0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch
0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
+ 0009-WPA-Ignore-unauthenticated-encrypted-EAPOL-Key-data.patch
)
validpgpkeys=('EC4AA0A991A5F2464582D52D2B6EF432EFC895FA') # Jouni Malinen
sha256sums=('b4936d34c4e6cdd44954beba74296d964bc2c9668ecaa5255e499636fe2b1450'
@@ -34,7 +34,8 @@ sha256sums=('b4936d34c4e6cdd44954beba74296d964bc2c9668ecaa5255e499636fe2b1450'
'147c8abe07606905d16404fb2d2c8849796ca7c85ed8673c09bb50038bcdeb9e'
'596d4d3b63ea859ed7ea9791b3a21cb11b6173b04c0a14a2afa47edf1666afa6'
'c5a17af84aec2d88c56ce0da2d6945be398fe7cab5c0c340deb30973900c2736'
- 'c8840d857b9432f3b488113c85c1ff5d4a4b8d81078b7033388dae1e990843b1')
+ 'c8840d857b9432f3b488113c85c1ff5d4a4b8d81078b7033388dae1e990843b1'
+ '960c3cf2a514479b0b4cf09665186a1a9f5d28e8b05dec23db75c6cc13eb1f7c')
prepare() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/abs/core/x264/PKGBUILD b/abs/core/x264/PKGBUILD
index 061ee76..d1d3baa 100644
--- a/abs/core/x264/PKGBUILD
+++ b/abs/core/x264/PKGBUILD
@@ -1,84 +1,58 @@
-# $Id$
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: damir <damir@archlinux.org>
# Contributor: Paul Mattal <paul@archlinux.org>
-pkgname=('x264' 'libx264' 'libx264-10bit')
-pkgver=148.20160920
-pkgrel=1
+pkgname=x264
+pkgver=155.r0a84d986
+pkgrel=2
epoch=2
-arch=('i686' 'x86_64')
-url='http://www.videolan.org/developers/x264.html'
+pkgdesc='Open Source H264/AVC video encoder'
+arch=('x86_64')
+url='https://www.videolan.org/developers/x264.html'
license=('GPL')
-depends=('glibc')
-makedepends=('yasm' 'git' 'ffmpeg' 'l-smash')
-_commit='86b71982e131eaa70125f8d0e725fcade9c4c677'
-source=("git://git.videolan.org/x264.git#commit=${_commit}")
+depends=(
+ 'libavcodec.so' 'libavformat.so' 'libavutil.so' 'liblsmash.so'
+ 'libswscale.so'
+)
+makedepends=('git' 'ffmpeg' 'l-smash' 'nasm')
+provides=('libx264' 'libx264.so')
+conflicts=('libx264' 'libx264-10bit' 'libx264-all')
+replaces=('libx264' 'libx264-10bit' 'libx264-all')
+_commit='0a84d986e7020f8344f00752e3600b9769cc1e85'
+source=("git+https://git.videolan.org/git/x264.git#commit=${_commit}")
sha256sums=('SKIP')
pkgver() {
- cd ${pkgbase}
+ cd x264
local _ver=$(grep '#define X264_BUILD' x264.h | cut -d' ' -f3)
- local _date=$(git log -1 --format="%cd" --date=short | tr -d -)
+ local _rev=$(git rev-parse --short HEAD)
- echo ${_ver}.${_date}
+ echo ${_ver}.r${_rev}
}
prepare() {
- cp -r ${pkgbase} ${pkgbase}-10bit
+ if [[ -d build ]]; then
+ rm -rf build
+ fi
+ mkdir build
}
build() {
- cd ${pkgbase}
+ cd build
- ./configure \
- --prefix='/usr' \
- --enable-shared \
- --enable-pic
- make
-
- cd ../${pkgbase}-10bit
-
- ./configure \
+ ../x264/configure \
--prefix='/usr' \
--enable-shared \
--enable-pic \
- --bit-depth='10'
+ --enable-lto
make
}
-package_x264() {
- pkgdesc='CLI tools for encoding H264/AVC video streams'
- depends+=('libavcodec.so' 'libavformat.so' 'libavutil.so' 'liblsmash.so'
- 'libswscale.so')
- provides=('x264-10bit')
- conflicts=('x264-10bit')
- replaces=('x264-10bit')
-
- make -C ${pkgbase} DESTDIR="${pkgdir}" install-cli
- install -m 755 ${pkgbase}-10bit/x264 "${pkgdir}"/usr/bin/x264-10bit
-}
-
-package_libx264() {
- pkgdesc='Library for encoding H264/AVC video streams'
- provides=('libx264.so' 'x264-dev')
- conflicts=('x264-dev')
- replaces=('x264-dev')
-
- install -dm 755 "${pkgdir}"/usr/lib
- make -C ${pkgbase} DESTDIR="${pkgdir}" install-lib-shared
-}
-
-package_libx264-10bit() {
- pkgdesc='Library for encoding H264/AVC video streams. 10bit-depth.'
- provides=('libx264.so' 'libx264' 'x264-dev')
- conflicts=('libx264' 'x264-dev')
-
- install -dm 755 "${pkgdir}"/usr/lib
- make -C ${pkgbase}-10bit DESTDIR="${pkgdir}" install-lib-shared
+package() {
+ make -C build DESTDIR="${pkgdir}" install-cli install-lib-shared
}
# vim: ts=2 sw=2 et:
diff --git a/abs/core/x265/PKGBUILD b/abs/core/x265/PKGBUILD
index 1a728d7..fa77dac 100644
--- a/abs/core/x265/PKGBUILD
+++ b/abs/core/x265/PKGBUILD
@@ -1,25 +1,24 @@
-# $Id$
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: kfgz <kfgz@interia.pl>
pkgname=x265
-pkgver=2.2
+pkgver=3.0
pkgrel=1
pkgdesc='Open Source H265/HEVC video encoder'
-arch=('i686' 'x86_64')
+arch=('x86_64')
url='https://bitbucket.org/multicoreware/x265'
license=('GPL')
-depends=('gcc-libs')
-makedepends=('yasm' 'cmake')
+depends=()
+makedepends=('cmake' 'mercurial' 'nasm')
provides=('libx265.so')
-source=("https://bitbucket.org/multicoreware/x265/downloads/x265_${pkgver}.tar.gz")
-sha256sums=('b872552535e41fbffa03ba7cbcd3479c42c4053868309292e78e147b7773ac4b')
+source=("hg+https://bitbucket.org/multicoreware/x265#tag=${pkgver}")
+sha256sums=('SKIP')
prepare() {
- cd x265_${pkgver}
+ cd x265
- for d in 8 $([[ $CARCH == 'x86_64' ]] && echo "10 12"); do
+ for d in 8 10 12; do
if [[ -d build-$d ]]; then
rm -rf build-$d
fi
@@ -28,56 +27,45 @@ prepare() {
}
build() {
- if [[ $CARCH == x86_64 ]]; then
-
- cd x265_${pkgver}/build-12
-
- cmake ../source \
- -DCMAKE_INSTALL_PREFIX='/usr' \
- -DHIGH_BIT_DEPTH='TRUE' \
- -DMAIN12='TRUE' \
- -DEXPORT_C_API='FALSE' \
- -DENABLE_CLI='FALSE' \
- -DENABLE_SHARED='FALSE'
- make
-
- cd ../build-10
-
- cmake ../source \
- -DCMAKE_INSTALL_PREFIX='/usr' \
- -DHIGH_BIT_DEPTH='TRUE' \
- -DEXPORT_C_API='FALSE' \
- -DENABLE_CLI='FALSE' \
- -DENABLE_SHARED='FALSE'
- make
-
- cd ../build-8
-
- ln -s ../build-10/libx265.a libx265_main10.a
- ln -s ../build-12/libx265.a libx265_main12.a
-
- cmake ../source \
- -DCMAKE_INSTALL_PREFIX='/usr' \
- -DENABLE_SHARED='TRUE' \
- -DEXTRA_LIB='x265_main10.a;x265_main12.a' \
- -DEXTRA_LINK_FLAGS='-L.' \
- -DLINKED_10BIT='TRUE' \
- -DLINKED_12BIT='TRUE'
- make
-
- else
-
- cd x265_${pkgver}/build-8
-
- cmake ../source \
- -DCMAKE_INSTALL_PREFIX='/usr' \
- -DENABLE_SHARED='TRUE'
-
- fi
+ cd x265/build-12
+
+ cmake ../source \
+ -DCMAKE_INSTALL_PREFIX='/usr' \
+ -DHIGH_BIT_DEPTH='TRUE' \
+ -DMAIN12='TRUE' \
+ -DEXPORT_C_API='FALSE' \
+ -DENABLE_CLI='FALSE' \
+ -DENABLE_SHARED='FALSE'
+ make
+
+ cd ../build-10
+
+ cmake ../source \
+ -DCMAKE_INSTALL_PREFIX='/usr' \
+ -DHIGH_BIT_DEPTH='TRUE' \
+ -DEXPORT_C_API='FALSE' \
+ -DENABLE_CLI='FALSE' \
+ -DENABLE_SHARED='FALSE'
+ make
+
+ cd ../build-8
+
+ ln -s ../build-10/libx265.a libx265_main10.a
+ ln -s ../build-12/libx265.a libx265_main12.a
+
+ cmake ../source \
+ -DCMAKE_INSTALL_PREFIX='/usr' \
+ -DENABLE_SHARED='TRUE' \
+ -DENABLE_HDR10_PLUS='TRUE' \
+ -DEXTRA_LIB='x265_main10.a;x265_main12.a' \
+ -DEXTRA_LINK_FLAGS='-L .' \
+ -DLINKED_10BIT='TRUE' \
+ -DLINKED_12BIT='TRUE'
+ make
}
package() {
- cd x265_${pkgver}/build-8
+ cd x265/build-8
make DESTDIR="${pkgdir}" install
}
diff --git a/abs/core/xf86-video-intel/0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch b/abs/core/xf86-video-intel/0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
new file mode 100644
index 0000000..ca79478
--- /dev/null
+++ b/abs/core/xf86-video-intel/0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
@@ -0,0 +1,93 @@
+From e85424325911626556fbe5a313c698a5da701163 Mon Sep 17 00:00:00 2001
+From: Peter Wu <peter@lekensteyn.nl>
+Date: Mon, 13 Aug 2018 22:59:50 +0200
+Subject: [PATCH xf86-video-intel] SNA: fix PRIME output support since xserver
+ 1.20
+
+Since xorg-server 1.20, an external monitor would remain blank when used
+in a PRIME output slave setup. Only a cursor was visible. The cause is
+"Make PixmapDirtyUpdateRec::src a DrawablePtr" in xserver, the "src"
+pointer might point to the root window (created by the server) instead
+of a pixmap (as created by xf86-video-intel). Use get_drawable_pixmap to
+handle both cases.
+
+When built with -fsanitize=address, the following test will trigger a
+heap-buffer-overflow error due to to_sna_from_pixmap receiving a window
+instead of a pixmap.
+
+Test on a hybrid graphics laptop (Intel + modesetting/nouveau):
+
+ xrandr --setprovideroutputsource modesetting Intel
+ xrandr --output DP-1-1 --mode 2560x1440 # should not crash
+ glxgears # should display gears on both screens
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100086
+Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+---
+Tested with xserver 1.20.1 with ASAN enabled. Survives multiple
+resolution changes, works with a Plasma desktop session, it seems
+stable. Something like this patch is required to make multi-monitor
+setups usable in a hybrid graphics setting with Xorg 1.20.
+---
+ src/sna/sna_accel.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 2f669bcf..80b116a3 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -17510,7 +17510,11 @@ static bool has_offload_slaves(struct sna *sna)
+ PixmapDirtyUpdatePtr dirty;
+
+ xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list, ent) {
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++ assert(dirty->src == &sna->front->drawable);
++#else
+ assert(dirty->src == sna->front);
++#endif
+ if (RegionNotEmpty(DamageRegion(dirty->damage)))
+ return true;
+ }
+@@ -17671,7 +17675,11 @@ static void sna_accel_post_damage(struct sna *sna)
+ if (RegionNil(damage))
+ continue;
+
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++ src = get_drawable_pixmap(dirty->src);
++#else
+ src = dirty->src;
++#endif
+ dst = dirty->slave_dst->master_pixmap;
+
+ region.extents.x1 = dirty->x;
+@@ -17922,9 +17930,15 @@ migrate_dirty_tracking(PixmapPtr old_front, PixmapPtr new_front)
+ PixmapDirtyUpdatePtr dirty, safe;
+
+ xorg_list_for_each_entry_safe(dirty, safe, &screen->pixmap_dirty_list, ent) {
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++ assert(dirty->src == &old_front->drawable);
++ if (dirty->src != &old_front->drawable)
++ continue;
++#else
+ assert(dirty->src == old_front);
+ if (dirty->src != old_front)
+ continue;
++#endif
+
+ DamageUnregister(&dirty->src->drawable, dirty->damage);
+ DamageDestroy(dirty->damage);
+@@ -17939,7 +17953,11 @@ migrate_dirty_tracking(PixmapPtr old_front, PixmapPtr new_front)
+ }
+
+ DamageRegister(&new_front->drawable, dirty->damage);
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++ dirty->src = &new_front->drawable;
++#else
+ dirty->src = new_front;
++#endif
+ }
+ #endif
+ }
+--
+2.18.0
+
diff --git a/abs/core/xf86-video-intel/PKGBUILD b/abs/core/xf86-video-intel/PKGBUILD
index 7808c73..042fed4 100644
--- a/abs/core/xf86-video-intel/PKGBUILD
+++ b/abs/core/xf86-video-intel/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id$
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-intel
-_commit=d7dfab62a9853b44bbcd67dac08391d8e5114c97 # master
-pkgver=2.99.917+829+gd7dfab62
+_commit=3a2dec17459dea56331430c8481646d538278518 # master
+pkgver=2.99.917+860+g3a2dec17
pkgrel=1
epoch=1
arch=(x86_64)
@@ -28,8 +27,10 @@ provides=('xf86-video-intel-uxa' 'xf86-video-intel-sna')
conflicts=('xorg-server<1.19' 'X-ABI-VIDEODRV_VERSION<23' 'X-ABI-VIDEODRV_VERSION>=24'
'xf86-video-intel-sna' 'xf86-video-intel-uxa' 'xf86-video-i810' 'xf86-video-intel-legacy')
groups=('xorg-drivers')
-source=("git+https://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel#commit=$_commit")
-sha256sums=('SKIP')
+source=("git+https://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel#commit=$_commit"
+ 0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch)
+sha256sums=('SKIP'
+ '7cdc310953379ede9693a387ecac6c803cc4c4461df5ad9ab875b35e90a552f5')
#options=('!makeflags')
pkgver() {
@@ -39,8 +40,12 @@ pkgver() {
prepare() {
cd $pkgname
- NOCONFIGURE=1 ./autogen.sh
+ # fix external monitor - FS#58895
+ # https://bugs.freedesktop.org/show_bug.cgi?id=100086
+ patch -Np1 -i ../0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
+
+ NOCONFIGURE=1 ./autogen.sh
# mkdir build
}
diff --git a/abs/extra/adobe-source-sans-pro-fonts/PKGBUILD b/abs/extra/adobe-source-sans-pro-fonts/PKGBUILD
new file mode 100644
index 0000000..7086c40
--- /dev/null
+++ b/abs/extra/adobe-source-sans-pro-fonts/PKGBUILD
@@ -0,0 +1,21 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=adobe-source-sans-pro-fonts
+pkgver=2.045ro+1.095it
+_relver=2.045R-ro/1.095R-it
+pkgrel=1
+pkgdesc="Sans serif font family for user interface environments"
+url="https://adobe-fonts.github.io/source-sans-pro/"
+arch=(any)
+license=(custom)
+_tarname=source-sans-pro-${_relver//\//-}
+source=("$_tarname.tar.gz::https://github.com/adobe-fonts/source-sans-pro/archive/$_relver.tar.gz")
+sha256sums=('01e78d7ff451545ff1eec6cf14b28f62135e430a7ba80d74a90efd5334fef7eb')
+
+package() {
+ cd $_tarname
+ install -Dt "$pkgdir/usr/share/fonts/${pkgname%-fonts}" -m644 OTF/*.otf VAR/*.otf
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 LICENSE.txt
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/ant/PKGBUILD b/abs/extra/ant/PKGBUILD
new file mode 100644
index 0000000..7ed980b
--- /dev/null
+++ b/abs/extra/ant/PKGBUILD
@@ -0,0 +1,82 @@
+# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
+# Contributor: Andrew Wright <andreww@photism.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgbase=ant
+pkgname=('ant' 'ant-doc')
+pkgver=1.10.5
+pkgrel=1
+pkgdesc='Java based build tool'
+url='https://ant.apache.org/'
+arch=('any')
+license=('APACHE')
+makedepends=('bash' 'java-environment' 'junit' 'java-hamcrest')
+source=(https://www.apache.org/dist/ant/source/apache-${pkgbase}-${pkgver}-src.tar.bz2{,.asc}
+ ant.conf)
+sha256sums=('71a5cdd45a54901b6321d5a140d882f7580c38f766a4e4959bcc36555da9f3ac'
+ 'SKIP'
+ '23bbef577b56d48adb1985dbd9795e5533146646f1e8bb879dd061a4014ffcf2')
+validpgpkeys=('CE8075A251547BEE249BC151A2115AE15F6B8B72') # Stefan Bodewig
+
+_replace_lib() {
+ # explicitly call rm to ensure we replace instead of add
+ rm "$2"
+ ln -s "$1" "$2"
+}
+
+prepare() {
+ cd apache-${pkgbase}-${pkgver}
+ sed -i 's|/usr/bin/python|/usr/bin/python2|' src/script/runant.py
+}
+
+build() {
+ cd apache-${pkgbase}-${pkgver}
+ export JAVA_HOME=/usr/lib/jvm/default
+ ./bootstrap.sh
+ bootstrap/bin/ant -Ddest=optional -f fetch.xml
+ _replace_lib /usr/share/java/junit.jar lib/optional/junit-4.12.jar
+ _replace_lib /usr/share/java/hamcrest-core.jar lib/optional/hamcrest-core-1.3.jar
+ _replace_lib /usr/share/java/hamcrest-library.jar lib/optional/hamcrest-library-1.3.jar
+ bootstrap/bin/ant dist
+}
+
+package_ant() {
+ depends=('java-environment' 'bash')
+ optdepends=('junit: junit tasks'
+ 'java-hamcrest: junit tasks')
+ replaces=('apache-ant')
+ provides=('apache-ant')
+ conflicts=('apache-ant')
+ backup=('etc/ant.conf')
+
+ cd apache-${pkgbase}-${pkgver}/apache-${pkgbase}-${pkgver}
+ local _ant_home=/usr/share/ant
+
+ install -d "${pkgdir}${_ant_home}"
+ cp -Rp etc "${pkgdir}${_ant_home}"
+
+ find bin -type f -a ! -name \*.bat -a ! -name \*.cmd \
+ -exec install -Dm 755 {} -t "${pkgdir}${_ant_home}/bin" \;
+ install -d "${pkgdir}/usr/bin"
+ ln -s /usr/share/ant/bin/ant "${pkgdir}/usr/bin/ant"
+
+ install -Dm 644 "${srcdir}/ant.conf" -t "${pkgdir}/etc"
+ install -Dm 644 lib/*.jar -t "${pkgdir}/usr/share/java/ant"
+ ln -s /usr/share/java/ant "${pkgdir}${_ant_home}/lib"
+
+ install -Dm 644 ../{LICENSE,NOTICE} -t "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_ant-doc() {
+ pkgdesc='Apache Ant build tool documentation'
+ replaces=('apache-ant-doc')
+ provices=('apache-ant-doc')
+ conflicts=('apache-ant-doc')
+
+ install -d "${pkgdir}/usr/share/doc/ant"
+ cp -r apache-${pkgbase}-${pkgver}/apache-${pkgbase}-${pkgver}/manual/* \
+ "${pkgdir}/usr/share/doc/ant"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/ant/ant.conf b/abs/extra/ant/ant.conf
new file mode 100644
index 0000000..63bf219
--- /dev/null
+++ b/abs/extra/ant/ant.conf
@@ -0,0 +1,8 @@
+# Apache Ant start script configuration file
+ANT_HOME=/usr/share/ant
+
+# Optional jars and their dependencies
+OPT_JAR_LIST=/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar
+LOCALCLASSPATH=${OPT_JAR_LIST}
+
+# vim:ft=sh
diff --git a/abs/extra/aom/PKGBUILD b/abs/extra/aom/PKGBUILD
new file mode 100644
index 0000000..cd86dd7
--- /dev/null
+++ b/abs/extra/aom/PKGBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Chocobo1 <chocobo1 AT archlinux DOT net>
+
+pkgname=aom
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="Alliance for Open Media video codec"
+url="https://aomedia.org/"
+arch=(x86_64)
+license=(BSD custom:PATENTS)
+depends=(gcc-libs)
+makedepends=(git cmake ninja doxygen graphviz yasm)
+_commit=d14c5bb4f336ef1842046089849dee4a301fbbf0 # tags/v1.0.0^0
+source=("git+https://aomedia.googlesource.com/aom#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/^v//;s/-/+/g'
+}
+
+prepare() {
+ mkdir build
+ cd $pkgname
+ # Reduce docs size
+ printf '%s\n' >>libs.doxy_template \
+ HAVE_DOT=yes DOT_IMAGE_FORMAT=svg INTERACTIVE_SVG=yes
+}
+
+build() {
+ cd build
+ cmake -G Ninja ../$pkgname \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=1 \
+ -DENABLE_TESTS=0
+ cmake --build .
+}
+
+package() {
+ DESTDIR="$pkgdir" cmake --build build --target install
+
+ mkdir -p "$pkgdir/usr/share/doc"
+ cp -r build/docs/html "$pkgdir/usr/share/doc/$pkgname"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgname/{LICENSE,PATENTS}
+}
+
+# vim:set et sw=2:
diff --git a/abs/extra/apache-ant/PKGBUILD b/abs/extra/apache-ant/PKGBUILD
deleted file mode 100644
index d8982e8..0000000
--- a/abs/extra/apache-ant/PKGBUILD
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id: PKGBUILD 160040 2012-05-28 13:39:12Z guillaume $
-# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
-# Contributor: Andrew Wright <andreww@photism.org>
-# Contributor: Paul Mattal <paul@archlinux.org>
-pkgname=apache-ant
-pkgver=1.8.4
-pkgrel=1
-pkgdesc="A java-based build tool"
-arch=('any')
-url="http://ant.apache.org/"
-license=('APACHE')
-depends=('java-environment')
-makedepends=('java-environment' 'xalan-java' 'junit' 'apache-ant')
-optdepends=('junit: to jave junit on the classpath in javac tasks')
-#http://apache.org/dist/ant/source/${pkgname}-${pkgver}-src.tar.bz2
-source=(http://apache.org/dist/ant/binaries/${pkgname}-${pkgver}-bin.tar.bz2
- ${pkgname}.sh
- ${pkgname}.csh)
-md5sums=('561838e665e5dc185dde9d220fce1336'
- 'dbfa1e8dd4bab2f5821f5abe50835c83'
- 'b3f67824043b6fb00667bb7a4007af42')
-
-_ant_home=/usr/share/${pkgname}
-
-#build() {
-# cd "${srcdir}/${pkgname}-${pkgver}"
-
-# ant -Ddest=optional -f fetch.xml
-
-# ln -s /usr/share/java/junit.jar lib/optional/junit.jar
-# ./bootstrap.sh
-
-# mkdir ${srcdir}/.m2
-# ./bootstrap/bin/ant -Ddest=optional -Ddest.dir=${srcdir}/.m2 -f fetch.xml
-# ./bootstrap/bin/ant -f fetch.xml -nouserlib -Ddest=optional
-
-# sh build.sh dist
-
-# ant dist
-#}
-
-package() {
-# cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}-${pkgver}"
- cd "${srcdir}/${pkgname}-${pkgver}"
-
- install -dm755 ${pkgdir}/${_ant_home}/bin
- cp -Rp etc ${pkgdir}/${_ant_home}
- find ./bin -type f -a ! -name \*.bat -a ! -name \*.cmd \
- -exec install -m755 {} ${pkgdir}/${_ant_home}/bin \;
-
- install -dm755 ${pkgdir}/usr/bin
- ln -s ${_ant_home}/bin/ant ${pkgdir}/usr/bin/ant
-
- install -dm755 ${pkgdir}/usr/share/java/${pkgname}
- install -m644 lib/*.jar ${pkgdir}/usr/share/java/${pkgname}
- ln -s /usr/share/java/${pkgname} ${pkgdir}/${_ant_home}/lib
-
- # Symlink to junit so it's on the javac build path
- # http://bugs.archlinux.org/task/15229
- # http://ant.apache.org/manual/install.html#optionalTasks
- ln -sf ../junit.jar ${pkgdir}/usr/share/java/apache-ant/
-
- # fix python2 path
- sed -i 's|/usr/bin/python|/usr/bin/python2|' ${pkgdir}${_ant_home}/bin/runant.py
-
- # install profile.d script
- install -dm755 ${pkgdir}/etc/profile.d
- install -m755 "${srcdir}"/${pkgname}.{csh,sh} ${pkgdir}/etc/profile.d/
-
- # License says NOTICE file should be redistributed for derivative works
- cd ${srcdir}/${pkgname}-${pkgver}
- install -dm755 ${pkgdir}/usr/share/licenses/${pkgname}
- install -m644 LICENSE NOTICE ${pkgdir}/usr/share/licenses/${pkgname}
-}
diff --git a/abs/extra/apache-ant/ant_diagnostics.patch b/abs/extra/apache-ant/ant_diagnostics.patch
deleted file mode 100644
index 38148b4..0000000
--- a/abs/extra/apache-ant/ant_diagnostics.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/src/main/org/apache/tools/ant/Diagnostics.java
-+++ b/src/main/org/apache/tools/ant/Diagnostics.java
-@@ -179,7 +179,10 @@
- * @param clazz the class to get the information from.
- * @since Ant 1.8.0
- */
-- private static URL getClassLocation(Class clazz) {
-+ private static URL getClassLocation(Class clazz) {
-+ if (clazz.getProtectionDomain().getCodeSource() == null) {
-+ return null;
-+ }
- return clazz.getProtectionDomain().getCodeSource().getLocation();
- }
-
-@@ -241,7 +244,7 @@
- }
- Transformer transformer = null;
- try {
-- transformer = transformerFactory.newTransformer();
-+ transformer = transformerFactory.newTransformer();
- } catch (Exception e) {
- // ignore
- ignoreThrowable(e);
diff --git a/abs/extra/apache-ant/apache-ant.csh b/abs/extra/apache-ant/apache-ant.csh
deleted file mode 100644
index a19392b..0000000
--- a/abs/extra/apache-ant/apache-ant.csh
+++ /dev/null
@@ -1 +0,0 @@
-setenv ANT_HOME /usr/share/apache-ant
diff --git a/abs/extra/apache-ant/apache-ant.sh b/abs/extra/apache-ant/apache-ant.sh
deleted file mode 100644
index eaa8a54..0000000
--- a/abs/extra/apache-ant/apache-ant.sh
+++ /dev/null
@@ -1 +0,0 @@
-export ANT_HOME=/usr/share/apache-ant
diff --git a/abs/extra/appstream-glib/PKGBUILD b/abs/extra/appstream-glib/PKGBUILD
new file mode 100644
index 0000000..7492a3b
--- /dev/null
+++ b/abs/extra/appstream-glib/PKGBUILD
@@ -0,0 +1,42 @@
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=appstream-glib
+pkgver=0.7.14
+pkgrel=1
+pkgdesc="Objects and methods for reading and writing AppStream metadata"
+url="https://people.freedesktop.org/~hughsient/appstream-glib/"
+arch=(x86_64)
+license=(LGPL)
+depends=(gtk3 libyaml pacman gcab libsoup libstemmer)
+makedepends=(gobject-introspection gtk-doc autoconf-archive git gperf meson)
+provides=(appdata-tools)
+conflicts=(appdata-tools)
+replaces=(appdata-tools)
+_commit=75a7af1d8870bb0fcf216e788b273a4c41e99cec # tags/appstream_glib_0_7_14^0
+source=("git+https://github.com/hughsie/appstream-glib#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/^appstream_glib_//;s/_/./g;s/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+}
+
+build() {
+ arch-meson $pkgname build \
+ -D alpm=true \
+ -D gtk-doc=true \
+ -D rpm=false
+ ninja -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
diff --git a/abs/extra/bubblewrap/PKGBUILD b/abs/extra/bubblewrap/PKGBUILD
new file mode 100644
index 0000000..5d443dd
--- /dev/null
+++ b/abs/extra/bubblewrap/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+
+pkgname=bubblewrap
+pkgver=0.3.1
+pkgrel=1
+pkgdesc='Unprivileged sandboxing tool'
+url='https://github.com/projectatomic/bubblewrap'
+arch=(x86_64)
+license=(GPL)
+depends=(glibc libcap)
+makedepends=(libxslt docbook-xsl git)
+_commit=e7b517f40956a153972fd61a2c6da1140f52990b # tags/v0.3.1^0
+source=(git+$url#commit=$_commit)
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe | sed 's/^v//'
+}
+
+prepare() {
+ cd $pkgname
+ NOCONFIGURE=1 ./autogen.sh
+}
+
+build() {
+ cd $pkgname
+ ./configure --prefix=/usr \
+ --with-priv-mode=setuid
+ make
+}
+
+package() {
+ cd $pkgname
+ make DESTDIR="$pkgdir" install
+}
diff --git a/abs/extra/cantarell-fonts/PKGBUILD b/abs/extra/cantarell-fonts/PKGBUILD
new file mode 100644
index 0000000..6a721d4
--- /dev/null
+++ b/abs/extra/cantarell-fonts/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=cantarell-fonts
+pkgver=0.111
+pkgrel=1
+epoch=1
+pkgdesc="Humanist sans serif font"
+url="https://gitlab.gnome.org/GNOME/cantarell-fonts"
+arch=(any)
+license=(custom:SIL)
+makedepends=(meson appstream-glib git)
+_commit=9c0eb3dc8c0b2e0d5b9e4dfcd48ca1b9531baaa9 # tags/v0.111^0
+source=("git+https://gitlab.gnome.org/GNOME/cantarell-fonts.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/^v//;s/-/+/g'
+}
+
+prepare() {
+ python -m venv venv
+ venv/bin/pip install fontmake psautohint
+ cd $pkgname
+}
+
+build() {
+ PATH="$srcdir/venv/bin:$PATH" arch-meson $pkgname build
+ ninja -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgname/COPYING
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/ccache/PKGBUILD b/abs/extra/ccache/PKGBUILD
new file mode 100644
index 0000000..9928463
--- /dev/null
+++ b/abs/extra/ccache/PKGBUILD
@@ -0,0 +1,51 @@
+# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ccache
+pkgver=3.6
+pkgrel=1
+pkgdesc='Compiler cache that speeds up recompilation by caching previous compilations'
+url='https://ccache.samba.org/'
+arch=('x86_64')
+license=('GPL3')
+depends=('zlib')
+source=(https://www.samba.org/ftp/ccache/ccache-${pkgver}.tar.xz{,.asc})
+validpgpkeys=('5A939A71A46792CF57866A51996DDA075594ADB8') # Joel Rosdahl <joel@rosdahl.net>
+sha256sums=('a6b129576328fcefad00cb72035bc87bc98b6a76aec0f4b59bed76d67a399b1f'
+ 'SKIP')
+sha512sums=('13ce4c9084983ce77617cf005235987715cd6b630dac13a17cb9badce24aab71bff505e63da4206878e32d337cc674f05fbf78540711ec5b33a0b8384c47fa0d'
+ 'SKIP')
+
+build() {
+ cd ${pkgname}-${pkgver}
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc
+ make
+}
+
+check() {
+ cd ${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${pkgname}-${pkgver}
+
+ install -Dm 755 ccache -t "${pkgdir}/usr/bin"
+ install -Dm 644 doc/ccache.1 -t "${pkgdir}/usr/share/man/man1"
+ install -Dm 644 doc/{AUTHORS,MANUAL,NEWS}.adoc README.md -t "${pkgdir}/usr/share/doc/${pkgname}"
+
+ install -d "${pkgdir}/usr/lib/ccache/bin"
+ local _prog
+ for _prog in gcc g++ c++; do
+ ln -s /usr/bin/ccache "${pkgdir}/usr/lib/ccache/bin/$_prog"
+ ln -s /usr/bin/ccache "${pkgdir}/usr/lib/ccache/bin/${CHOST}-$_prog"
+ done
+ for _prog in cc clang clang++; do
+ ln -s /usr/bin/ccache "${pkgdir}/usr/lib/ccache/bin/$_prog"
+ done
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/clang/PKGBUILD b/abs/extra/clang/PKGBUILD
new file mode 100644
index 0000000..b05858d
--- /dev/null
+++ b/abs/extra/clang/PKGBUILD
@@ -0,0 +1,106 @@
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+
+pkgname=clang
+pkgver=7.0.1
+pkgrel=1
+pkgdesc="C language family frontend for LLVM"
+arch=('x86_64')
+url="https://clang.llvm.org/"
+license=('custom:University of Illinois/NCSA Open Source License')
+depends=('llvm-libs' 'gcc' 'compiler-rt')
+makedepends=('llvm' 'cmake' 'ninja' 'python-sphinx' 'python2')
+optdepends=('openmp: OpenMP support in clang with -fopenmp'
+ 'python: for git-clang-format'
+ 'python2: for scan-view')
+provides=("clang-analyzer=$pkgver" "clang-tools-extra=$pkgver")
+conflicts=('clang-analyzer' 'clang-tools-extra')
+replaces=('clang-analyzer' 'clang-tools-extra')
+source=(https://releases.llvm.org/$pkgver/cfe-$pkgver.src.tar.xz{,.sig}
+ https://releases.llvm.org/$pkgver/clang-tools-extra-$pkgver.src.tar.xz{,.sig}
+ https://releases.llvm.org/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
+ enable-SSP-and-PIE-by-default.patch)
+sha256sums=('a45b62dde5d7d5fdcdfa876b0af92f164d434b06e9e89b5d0b1cbc65dfe3f418'
+ 'SKIP'
+ '4c93c7d2bb07923a8b272da3ef7914438080aeb693725f4fc5c19cd0e2613bed'
+ 'SKIP'
+ 'a38dfc4db47102ec79dcc2aa61e93722c5f6f06f0a961073bd84b78fb949419b'
+ 'SKIP'
+ '8dd3938afb93a051acf69373f7a4e1eb7cf9dd28d8e334c98d30a531d4af0181')
+validpgpkeys+=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg <hans@chromium.org>
+validpgpkeys+=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
+
+prepare() {
+ cd "$srcdir/cfe-$pkgver.src"
+ mkdir build
+ mv "$srcdir/clang-tools-extra-$pkgver.src" tools/extra
+ patch -Np1 -i ../enable-SSP-and-PIE-by-default.patch
+}
+
+build() {
+ cd "$srcdir/cfe-$pkgver.src/build"
+
+ cmake .. -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DPYTHON_EXECUTABLE=/usr/bin/python \
+ -DBUILD_SHARED_LIBS=ON \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_BUILD_TESTS=ON \
+ -DLLVM_INCLUDE_DOCS=ON \
+ -DLLVM_BUILD_DOCS=ON \
+ -DLLVM_ENABLE_SPHINX=ON \
+ -DSPHINX_WARNINGS_AS_ERRORS=OFF \
+ -DLLVM_EXTERNAL_LIT=/usr/bin/lit \
+ -DLLVM_MAIN_SRC_DIR="$srcdir/llvm-$pkgver.src"
+ ninja
+}
+
+check() {
+ cd "$srcdir/cfe-$pkgver.src/build"
+ ninja check-clang{,-tools}
+}
+
+_python2_optimize() {
+ python2 -m compileall "$@"
+ python2 -O -m compileall "$@"
+}
+
+_python3_optimize() {
+ python3 -m compileall "$@"
+ python3 -O -m compileall "$@"
+ python3 -OO -m compileall "$@"
+}
+
+package() {
+ cd "$srcdir/cfe-$pkgver.src/build"
+
+ DESTDIR="$pkgdir" ninja install
+ install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+
+ # Remove documentation sources
+ rm -r "$pkgdir"/usr/share/doc/clang{,-tools}/html/{_sources,.buildinfo}
+
+ # Move analyzer scripts out of /usr/libexec
+ mv "$pkgdir"/usr/libexec/{ccc,c++}-analyzer "$pkgdir/usr/lib/clang/"
+ rmdir "$pkgdir/usr/libexec"
+ sed -i 's|libexec|lib/clang|' "$pkgdir/usr/bin/scan-build"
+
+ # Install Python bindings
+ for _py in 2.7 3.7; do
+ install -d "$pkgdir/usr/lib/python$_py/site-packages"
+ cp -a ../bindings/python/clang "$pkgdir/usr/lib/python$_py/site-packages/"
+ _python${_py%%.*}_optimize "$pkgdir/usr/lib/python$_py"
+ done
+
+ # Fix shebang in Python 2 scripts
+ sed -i '1s|/usr/bin/env python$|&2|' \
+ "$pkgdir/usr/bin/scan-view" \
+ "$pkgdir"/usr/share/$pkgname/*.py
+
+ # Compile Python scripts
+ _python2_optimize "$pkgdir/usr/share"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/llvm/0002-Enable-SSP-and-PIE-by-default.patch b/abs/extra/clang/enable-SSP-and-PIE-by-default.patch
index 030146c..383fc66 100644
--- a/abs/extra/llvm/0002-Enable-SSP-and-PIE-by-default.patch
+++ b/abs/extra/clang/enable-SSP-and-PIE-by-default.patch
@@ -1,7 +1,7 @@
-From 60fa751da239e592b31bde2533342dac64359e7f Mon Sep 17 00:00:00 2001
+From ece245fe717765630790da501a3d64f5c09a1e09 Mon Sep 17 00:00:00 2001
From: Evangelos Foutras <evangelos@foutrelis.com>
-Date: Thu, 6 Jul 2017 18:15:43 +0300
-Subject: [PATCH 2/2] Enable SSP and PIE by default
+Date: Thu, 20 Sep 2018 06:20:28 +0300
+Subject: [PATCH] Enable SSP and PIE by default
This is a minimal set of changes needed to make clang use SSP and PIE by
default on Arch Linux. Tests that were easy to adjust have been changed
@@ -17,61 +17,50 @@ solution, but a simple temporary fix.
Hopefully these changes will be obsoleted by the introduction upstream
of a compile-time option (https://bugs.llvm.org/show_bug.cgi?id=13410)
---
- lib/Driver/ToolChains/Gnu.cpp | 1 +
- lib/Driver/ToolChains/Linux.cpp | 14 +++++++++++++-
+ lib/Driver/ToolChains/Linux.cpp | 14 ++++++++++++--
lib/Driver/ToolChains/Linux.h | 1 +
+ test/Driver/clang-offload-bundler.c | 2 +-
test/Driver/cross-linux.c | 16 ++++++++--------
test/Driver/env.c | 2 +-
- test/Driver/fsanitize.c | 18 ++++++++++--------
+ test/Driver/fsanitize.c | 14 +++++++-------
test/Driver/gcc-toolchain.cpp | 2 +-
test/Driver/hexagon-toolchain-elf.c | 2 +-
test/Driver/linux-as.c | 4 ++--
test/Driver/linux-ld.c | 2 ++
+ test/Driver/riscv32-toolchain.c | 4 ++--
test/Driver/stack-protector.c | 4 ++--
- 11 files changed, 42 insertions(+), 24 deletions(-)
+ 12 files changed, 40 insertions(+), 27 deletions(-)
-diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
-index 72a9f85ba3..4fd567b03b 100644
---- a/lib/Driver/ToolChains/Gnu.cpp
-+++ b/lib/Driver/ToolChains/Gnu.cpp
-@@ -417,6 +417,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
- const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
- const bool IsPIE =
- !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
-+ !Args.hasArg(options::OPT_nopie) &&
- (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
- const bool HasCRTBeginEndFiles =
- ToolChain.getTriple().hasEnvironment() ||
diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index 08a27fa7fe..1dd70b115d 100644
+index f8f3623918..7f75021542 100644
--- a/lib/Driver/ToolChains/Linux.cpp
+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -810,7 +810,19 @@ void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
- }
+@@ -903,8 +903,18 @@ void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
}
--bool Linux::isPIEDefault() const { return getSanitizerArgs().requiresPIE(); }
-+bool Linux::isPIEDefault() const {
-+ const bool IsMips = tools::isMipsArch(getTriple().getArch());
+ bool Linux::isPIEDefault() const {
+- return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
+- getTriple().isMusl() || getSanitizerArgs().requiresPIE();
++ const bool IsMips = getTriple().isMIPS();
+ const bool IsAndroid = getTriple().isAndroid();
+
+ if (IsMips || IsAndroid)
-+ return getSanitizerArgs().requiresPIE();
++ return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
++ getTriple().isMusl() || getSanitizerArgs().requiresPIE();
+
+ return true;
+}
+
+unsigned Linux::GetDefaultStackProtectorLevel(bool KernelOrKext) const {
+ return 2;
-+}
+ }
SanitizerMask Linux::getSupportedSanitizers() const {
- const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
diff --git a/lib/Driver/ToolChains/Linux.h b/lib/Driver/ToolChains/Linux.h
-index 9778c1832c..ddd46a1d58 100644
+index 22dbbecf6b..ba0d5587e0 100644
--- a/lib/Driver/ToolChains/Linux.h
+++ b/lib/Driver/ToolChains/Linux.h
-@@ -36,6 +36,7 @@ public:
+@@ -38,6 +38,7 @@ public:
void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
bool isPIEDefault() const override;
@@ -79,6 +68,19 @@ index 9778c1832c..ddd46a1d58 100644
SanitizerMask getSupportedSanitizers() const override;
void addProfileRTLibs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const override;
+diff --git a/test/Driver/clang-offload-bundler.c b/test/Driver/clang-offload-bundler.c
+index adf13f59d4..fd2f6e5d8c 100644
+--- a/test/Driver/clang-offload-bundler.c
++++ b/test/Driver/clang-offload-bundler.c
+@@ -115,7 +115,7 @@
+ // CK-TEXTI: // __CLANG_OFFLOAD_BUNDLE____END__ openmp-x86_64-pc-linux-gnu
+
+ // CK-TEXTLL: ; __CLANG_OFFLOAD_BUNDLE____START__ host-powerpc64le-ibm-linux-gnu
+-// CK-TEXTLL: @A = global i32 0
++// CK-TEXTLL: @A = {{(dso_local )?}}global i32 0
+ // CK-TEXTLL: define {{.*}}@test_func()
+ // CK-TEXTLL: ; __CLANG_OFFLOAD_BUNDLE____END__ host-powerpc64le-ibm-linux-gnu
+ // CK-TEXTLL: ; __CLANG_OFFLOAD_BUNDLE____START__ openmp-powerpc64le-ibm-linux-gnu
diff --git a/test/Driver/cross-linux.c b/test/Driver/cross-linux.c
index a5ea832e77..1949c05a60 100644
--- a/test/Driver/cross-linux.c
@@ -141,10 +143,10 @@ index 0371bc91c4..ea89f52512 100644
// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
diff --git a/test/Driver/fsanitize.c b/test/Driver/fsanitize.c
-index 0752ef6df0..5d1e211b24 100644
+index 304e759302..c157f9fc48 100644
--- a/test/Driver/fsanitize.c
+++ b/test/Driver/fsanitize.c
-@@ -192,13 +192,13 @@
+@@ -238,15 +238,15 @@
// RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fno-sanitize=vptr -fsanitize=undefined,address %s -### 2>&1
// OK
@@ -154,7 +156,9 @@ index 0752ef6df0..5d1e211b24 100644
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
// RUN: %clang -target x86_64-unknown-freebsd -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
// RUN: %clang -target aarch64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
- // RUN: %clang -target arm-linux-androideabi -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
+ // RUN: %clang -target arm-linux-androideabi -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIC-NO-PIE
+ // RUN: %clang -target arm-linux-androideabi24 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
+ // RUN: %clang -target aarch64-linux-android -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
-// RUN: %clang -target i386-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-PIE
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PIE
@@ -162,14 +166,13 @@ index 0752ef6df0..5d1e211b24 100644
// CHECK-NO-PIE-NOT: "-pie"
// CHECK-NO-PIE: "-mrelocation-model" "static"
-@@ -491,12 +491,12 @@
+@@ -585,12 +585,12 @@
// RUN: %clang -fno-sanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NOSP
// NOSP-NOT: "-fsanitize=safe-stack"
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
--// RUN: %clang -target x86_64-linux-gnu -fsanitize=address,safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP-ASAN
+// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
-+// RUN: %clang -target x86_64-linux-gnu -fsanitize=address,safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP-ASAN
+ // RUN: %clang -target x86_64-linux-gnu -fsanitize=address,safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP-ASAN
// RUN: %clang -target x86_64-linux-gnu -fstack-protector -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=SP
// RUN: %clang -target x86_64-linux-gnu -fsanitize=safe-stack -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=SP
-// RUN: %clang -target arm-linux-androideabi -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
@@ -179,15 +182,6 @@ index 0752ef6df0..5d1e211b24 100644
// RUN: %clang -target i386-contiki-unknown -fsanitize=safe-stack -### %s 2>&1 | FileCheck %s -check-prefix=NO-SP
// NO-SP-NOT: stack-protector
// NO-SP: "-fsanitize=safe-stack"
-@@ -506,6 +506,8 @@
-
- // NO-SP-ASAN-NOT: stack-protector
- // NO-SP-ASAN: "-fsanitize=address,safe-stack"
-+// SP-ASAN: "-fsanitize=address,safe-stack"
-+// SP-ASAN: -stack-protector
- // NO-SP-ASAN-NOT: stack-protector
-
- // RUN: %clang -target powerpc64-unknown-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-SANM
diff --git a/test/Driver/gcc-toolchain.cpp b/test/Driver/gcc-toolchain.cpp
index ca96757a2b..ae1c25e989 100644
--- a/test/Driver/gcc-toolchain.cpp
@@ -201,10 +195,10 @@ index ca96757a2b..ae1c25e989 100644
// CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
// CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
diff --git a/test/Driver/hexagon-toolchain-elf.c b/test/Driver/hexagon-toolchain-elf.c
-index 98582450e3..b2da01eaf5 100644
+index 8f4c320ce4..a4d9ae502b 100644
--- a/test/Driver/hexagon-toolchain-elf.c
+++ b/test/Driver/hexagon-toolchain-elf.c
-@@ -449,7 +449,7 @@
+@@ -457,7 +457,7 @@
// RUN: %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK042 %s
// CHECK042: "-cc1"
@@ -214,7 +208,7 @@ index 98582450e3..b2da01eaf5 100644
// CHECK042-NEXT: llvm-mc
// CHECK042: "-gpsize=8"
diff --git a/test/Driver/linux-as.c b/test/Driver/linux-as.c
-index c5cb1cd600..1ad86d8ead 100644
+index 68cf403d97..92b556db73 100644
--- a/test/Driver/linux-as.c
+++ b/test/Driver/linux-as.c
@@ -133,7 +133,7 @@
@@ -236,7 +230,7 @@ index c5cb1cd600..1ad86d8ead 100644
// CHECK-SPARCV9PIC: as
// CHECK-SPARCV9PIC: -64
diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c
-index 1c5f1a4556..2885f78045 100644
+index 787013931a..cba173b354 100644
--- a/test/Driver/linux-ld.c
+++ b/test/Driver/linux-ld.c
@@ -1,3 +1,5 @@
@@ -245,8 +239,30 @@ index 1c5f1a4556..2885f78045 100644
// General tests that ld invocations on Linux targets sane. Note that we use
// sysroot to make these tests independent of the host system.
//
+diff --git a/test/Driver/riscv32-toolchain.c b/test/Driver/riscv32-toolchain.c
+index 1e0c750a3f..563493a33b 100644
+--- a/test/Driver/riscv32-toolchain.c
++++ b/test/Driver/riscv32-toolchain.c
+@@ -44,7 +44,7 @@
+ // C-RV32-LINUX-MULTI-ILP32: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
+ // C-RV32-LINUX-MULTI-ILP32: "-m" "elf32lriscv"
+ // C-RV32-LINUX-MULTI-ILP32: "-dynamic-linker" "/lib/ld-linux-riscv32-ilp32.so.1"
+-// C-RV32-LINUX-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32{{/|\\\\}}crtbegin.o"
++// C-RV32-LINUX-MULTI-ILP32: "crtbeginS.o"
+ // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32"
+ // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib32/ilp32"
+ // C-RV32-LINUX-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib32/ilp32"
+@@ -59,7 +59,7 @@
+ // C-RV32-LINUX-MULTI-ILP32D: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
+ // C-RV32-LINUX-MULTI-ILP32D: "-m" "elf32lriscv"
+ // C-RV32-LINUX-MULTI-ILP32D: "-dynamic-linker" "/lib/ld-linux-riscv32-ilp32d.so.1"
+-// C-RV32-LINUX-MULTI-ILP32D: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32d{{/|\\\\}}crtbegin.o"
++// C-RV32-LINUX-MULTI-ILP32D: "crtbeginS.o"
+ // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib32/ilp32d"
+ // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib32/ilp32d"
+ // C-RV32-LINUX-MULTI-ILP32D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib32/ilp32d"
diff --git a/test/Driver/stack-protector.c b/test/Driver/stack-protector.c
-index 6769b65f63..180e26f3ea 100644
+index a3e40b50ee..dfffe0d6cf 100644
--- a/test/Driver/stack-protector.c
+++ b/test/Driver/stack-protector.c
@@ -3,11 +3,11 @@
@@ -264,5 +280,5 @@ index 6769b65f63..180e26f3ea 100644
// RUN: %clang -target i386-pc-openbsd -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD
--
-2.14.1
+2.19.0
diff --git a/abs/extra/compiler-rt/PKGBUILD b/abs/extra/compiler-rt/PKGBUILD
new file mode 100644
index 0000000..08ee08f
--- /dev/null
+++ b/abs/extra/compiler-rt/PKGBUILD
@@ -0,0 +1,47 @@
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+
+pkgname=compiler-rt
+pkgver=7.0.1
+pkgrel=1
+pkgdesc="Compiler runtime libraries for clang"
+arch=('x86_64')
+url="https://compiler-rt.llvm.org/"
+license=('custom:University of Illinois/NCSA Open Source License')
+depends=('gcc-libs')
+makedepends=('llvm' 'cmake' 'ninja' 'python')
+# Build 32-bit compiler-rt libraries on x86_64 (FS#41911)
+makedepends_x86_64=('lib32-gcc-libs')
+options=('staticlibs')
+source=(https://releases.llvm.org/$pkgver/$pkgname-$pkgver.src.tar.xz{,.sig})
+sha256sums=('782edfc119ee172f169c91dd79f2c964fb6b248bd9b73523149030ed505bbe18'
+ 'SKIP')
+validpgpkeys+=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg <hans@chromium.org>
+validpgpkeys+=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
+
+prepare() {
+ cd "$srcdir/$pkgname-$pkgver.src"
+ mkdir build
+}
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver.src/build"
+
+ cmake .. -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ ninja
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver.src/build"
+
+ DESTDIR="$pkgdir" ninja install
+ install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+
+ mkdir -p "$pkgdir"/usr/lib/clang/$pkgver/{lib,share}
+ mv "$pkgdir"/usr/lib/{linux,clang/$pkgver/lib/}
+ mv "$pkgdir"/usr/{share/*.txt,lib/clang/$pkgver/share/}
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/docbook-xml/PKGBUILD b/abs/extra/docbook-xml/PKGBUILD
index e5996d7..6f7cefc 100644
--- a/abs/extra/docbook-xml/PKGBUILD
+++ b/abs/extra/docbook-xml/PKGBUILD
@@ -1,273 +1,114 @@
-# $Id: PKGBUILD 151188 2012-02-25 07:07:26Z pierre $
-# Maintainer: dorphell <dorphell@archlinux.org>
-# Committer: Judd Vinet <jvinet@zeroflux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+_vers=(4.{2..5})
pkgname=docbook-xml
-pkgver=4.5
-pkgrel=5
+pkgver=${_vers[-1]}
+pkgrel=8
pkgdesc="A widely used XML scheme for writing documentation and help"
-arch=('any')
-url="http://www.oasis-open.org/docbook/"
-license=('MIT')
-depends=('libxml2')
+url="https://www.oasis-open.org/docbook/"
+arch=(any)
+license=(MIT)
+depends=(libxml2)
install=docbook-xml.install
-source=('http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip'
- 'http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip'
- 'http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip'
- 'http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip'
- 'http://www.docbook.org/xml/4.1.2/docbkx412.zip'
- 'LICENSE')
-noextract=('docbook-xml-4.5.zip' 'docbook-xml-4.4.zip' 'docbook-xml-4.3.zip' 'docbook-xml-4.2.zip' 'docbkx412.zip')
-md5sums=('03083e288e87a7e829e437358da7ef9e'
- 'cbb04e9a700955d88c50962ef22c1634'
- 'ab200202b9e136a144db1e0864c45074'
- '73fe50dfe74ca631c1602f558ed8961f'
- '900d7609fb7e6d78901b357e4acfbc17'
- '50e1eea70bc071b812e963e65af6707e')
+source=(https://docbook.org/xml/4.1.2/docbkx412.zip
+ LICENSE)
+noextract=(docbkx412.zip)
-package() {
- for ver in 4.2 4.3 4.4 4.5; do
- mkdir docbook-xml-${ver}
- pushd docbook-xml-${ver}
- bsdtar xf "${srcdir}/docbook-xml-${ver}.zip"
- mkdir -p "${pkgdir}/usr/share/xml/docbook/xml-dtd-${ver}"
- cp -dRf docbook.cat *.dtd ent/ *.mod \
- "${pkgdir}/usr/share/xml/docbook/xml-dtd-${ver}/"
- popd
- done
- mkdir docbook-xml-4.1.2
- pushd docbook-xml-4.1.2
- bsdtar xf "${srcdir}/docbkx412.zip"
- mkdir -p "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.1.2"
- cp -dRf docbook.cat *.dtd ent/ *.mod \
- "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.1.2/"
- popd
+for _ver in ${_vers[@]}; do
+ source+=("https://docbook.org/xml/$_ver/docbook-xml-$_ver.zip")
+ noextract+=("docbook-xml-$_ver.zip")
+done
+
+sha512sums=('f700591a671694ca0ac51f5b5b7e825df5c0b3604b20baa6afd3aaafa7ce99470ca1c261781b105b42bfa5485c23217cf3db821b3fcf2ebdae9df07bb8ae4063'
+ 'd852ab8e1442af4a91ffc32b9bb37377d98171dbc379cfd9787a2e06fc5c9b8ed04c5cd156ff5b7799973250011389456a3a3584ed4ae99362420c15235fcbb5'
+ '0c836346130d1e8f4e26e00959f6b4fd2c3c11269ba5cbf11cdc904724e189606f431c99cd5ab188877daa0eb44c58d0bc30556df3b51df480396818d61c4e0a'
+ 'f5090fb74884bae3d4fac8a3c5060bffff5d6a74272de183c181a7642e4b91f4ed32ad028537d198010782c3d98575ce679672f76a9749ed124432195886a7cb'
+ '7df5af4df24e4618b09814e4e20c147c722962531f03a40c28cd60f1db16b4c330420adf96adb7d66ed6eda84046ee91b467fd6f6fbfac2201537e2080735d76'
+ '1ee282fe86c9282610ee72c0e1d1acfc03f1afb9dc67166f438f2703109046479edb6329313ecb2949db27993077e077d111501c10b8769ebb20719eb6213d27')
- mkdir -p "${pkgdir}/etc/xml"
- xmlcatalog --noout --create "${pkgdir}/etc/xml/docbook-xml"
+package() {
+ local ver xml
- # V4.1.2
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/soextblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.1.2" \
- "file:///usr/share/xml/docbook/xml-dtd-4.1.2" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.1.2" \
- "file:///usr/share/xml/docbook/xml-dtd-4.1.2" \
- "${pkgdir}/etc/xml/docbook-xml"
+ mkdir -p "$pkgdir/etc/xml"
+ xmlcatalog --noout --create "$pkgdir/etc/xml/docbook-xml"
- # V4.2
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook CALS Table Model V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/soextblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Information Pool V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/dbpoolx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/dbhierx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Additional General Entities V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/dbgenent.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Notations V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/dbnotnx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Character Entities V4.2//EN" \
- "http://www.oasis-open.org/docbook/xml/4.2/dbcentx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.2" \
- "file:///usr/share/xml/docbook/xml-dtd-4.2" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.2" \
- "file:///usr/share/xml/docbook/xml-dtd-4.2" \
- "${pkgdir}/etc/xml/docbook-xml"
+ mkdir docbook-xml-4.1.2
+ bsdtar -C docbook-xml-4.1.2 -xf docbkx412.zip
+ for ver in ${_vers[@]}; do
+ mkdir docbook-xml-$ver
+ bsdtar -C docbook-xml-$ver -xf docbook-xml-$ver.zip
+ done
- # V4.3
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook CALS Table Model V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/soextblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Information Pool V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/dbpoolx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/dbhierx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Additional General Entities V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/dbgenent.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Notations V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/dbnotnx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Character Entities V4.3//EN" \
- "http://www.oasis-open.org/docbook/xml/4.3/dbcentx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.3" \
- "file:///usr/share/xml/docbook/xml-dtd-4.3" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.3" \
- "file:///usr/share/xml/docbook/xml-dtd-4.3" \
- "${pkgdir}/etc/xml/docbook-xml"
+ for ver in 4.1.2 ${_vers[@]}; do
+ pushd docbook-xml-$ver
+ mkdir -p "$pkgdir/usr/share/xml/docbook/xml-dtd-$ver"
+ cp -dr docbook.cat *.dtd ent/ *.mod \
+ "$pkgdir/usr/share/xml/docbook/xml-dtd-$ver"
+ popd
- # V4.4
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook CALS Table Model V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/htmltblx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/soextblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Information Pool V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/dbpoolx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/dbhierx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Additional General Entities V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/dbgenent.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Notations V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/dbnotnx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook Character Entities V4.4//EN" \
- "http://www.oasis-open.org/docbook/xml/4.4/dbcentx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.4" \
- "file:///usr/share/xml/docbook/xml-dtd-4.4" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.4" \
- "file:///usr/share/xml/docbook/xml-dtd-4.4" \
- "${pkgdir}/etc/xml/docbook-xml"
+ xml=
+ case $ver in
+ 4.1.2) xml=' XML' ;;&
+ *)
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD DocBook XML V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/docbookx.dtd" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD DocBook$xml CALS Table Model V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/calstblx.dtd" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/soextblx.dtd" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook$xml Information Pool V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/dbpoolx.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook$xml Document Hierarchy V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/dbhierx.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook$xml Additional General Entities V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/dbgenent.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook$xml Notations V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/dbnotnx.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook$xml Character Entities V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/dbcentx.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ ;;&
+ 4.[45])
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V$ver//EN" \
+ "http://www.oasis-open.org/docbook/xml/$ver/htmltblx.mod" \
+ "$pkgdir/etc/xml/docbook-xml"
+ ;;&
+ *)
+ xmlcatalog --noout --add "rewriteSystem" \
+ "http://www.oasis-open.org/docbook/xml/$ver" \
+ "/usr/share/xml/docbook/xml-dtd-$ver" \
+ "$pkgdir/etc/xml/docbook-xml"
+ xmlcatalog --noout --add "rewriteURI" \
+ "http://www.oasis-open.org/docbook/xml/$ver" \
+ "/usr/share/xml/docbook/xml-dtd-$ver" \
+ "$pkgdir/etc/xml/docbook-xml"
+ ;;&
+ esac
+ done
- # V4.5
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.5//EN" \
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.5" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5" \
- "${pkgdir}/etc/xml/docbook-xml"
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.5" \
- "file:///usr/share/xml/docbook/xml-dtd-4.5" \
- "${pkgdir}/etc/xml/docbook-xml"
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 LICENSE
-# license
- install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ # Fix permissions
+ find "$pkgdir" -type f -exec chmod -c a-x {} +
+ chmod -Rc u=rwX,go=rX "$pkgdir"
}
+
+# vim:set sw=2 et:
diff --git a/abs/extra/docbook-xsl/765567_non-recursive_string_subst.patch b/abs/extra/docbook-xsl/765567_non-recursive_string_subst.patch
new file mode 100644
index 0000000..ae845ad
--- /dev/null
+++ b/abs/extra/docbook-xsl/765567_non-recursive_string_subst.patch
@@ -0,0 +1,32 @@
+Description: use EXSLT "replace" function when available
+ A recursive implementation of string.subst is problematic,
+ long strings with many matches will cause stack overflows.
+Author: Peter De Wachter <pdewacht@gmail.com>
+Bug-Debian: https://bugs.debian.org/750593
+
+--- docbook-xsl-1.78.1+dfsg.orig/docbook-xsl/lib/lib.xsl
++++ docbook-xsl-1.78.1+dfsg/docbook-xsl/lib/lib.xsl
+@@ -6,7 +6,11 @@
+
+ This module implements DTD-independent functions
+
+- ******************************************************************** --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
++ ******************************************************************** -->
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++ xmlns:str="http://exslt.org/strings"
++ exclude-result-prefixes="str"
++ version="1.0">
+
+ <xsl:template name="dot.count">
+ <!-- Returns the number of "." characters in a string -->
+@@ -52,6 +56,9 @@
+ <xsl:param name="replacement"/>
+
+ <xsl:choose>
++ <xsl:when test="function-available('str:replace')">
++ <xsl:value-of select="str:replace($string, string($target), string($replacement))"/>
++ </xsl:when>
+ <xsl:when test="contains($string, $target)">
+ <xsl:variable name="rest">
+ <xsl:call-template name="string.subst">
+
diff --git a/abs/extra/docbook-xsl/PKGBUILD b/abs/extra/docbook-xsl/PKGBUILD
index aef4b1e..51712c6 100644
--- a/abs/extra/docbook-xsl/PKGBUILD
+++ b/abs/extra/docbook-xsl/PKGBUILD
@@ -1,35 +1,42 @@
-# $Id: PKGBUILD 162687 2012-06-27 22:24:21Z tomegun $
-# Maintainer: Tom Gundersen <teg@jklm.no>
+# Maintainer: Antonio Rojas <arojas@archlinux.org>
+# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Sean Middleditch <elanthis@awesomeplay.com>
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=docbook-xsl
-pkgver=1.77.1
-pkgrel=2
+pkgver=1.79.2
+pkgrel=4
pkgdesc='XML stylesheets for Docbook-xml transformations'
-arch=('any')
-license=('custom')
-url='http://docbook.sourceforge.net/'
-depends=('libxml2' 'libxslt' 'docbook-xml')
+arch=(any)
+license=(custom)
+url='https://docbook.org/'
+depends=(libxml2 libxslt docbook-xml sed)
install="$pkgname.install"
-source=("http://downloads.sourceforge.net/docbook/${pkgname}-${pkgver}.tar.bz2")
+source=("https://github.com/docbook/xslt10-stylesheets/releases/download/release%2F$pkgver/docbook-xsl-nons-$pkgver.tar.gz"
+ 765567_non-recursive_string_subst.patch)
+sha256sums=('f89425b44e48aad24319a2f0d38e0cb6059fdc7dbaf31787c8346c748175ca8e'
+ '193ec26dcb37bdf12037ed4ea98d68bd550500c8e96b719685d76d7096c3f9b3')
+
+prepare() {
+ cd $pkgname-nons-$pkgver
+ patch -Np2 -i ../765567_non-recursive_string_subst.patch
+}
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd $pkgname-nons-$pkgver
- _pkgroot=${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}
+ _pkgroot="$pkgdir"/usr/share/xml/docbook/xsl-stylesheets-$pkgver
- install -dm755 ${_pkgroot}
- install -m644 VERSION VERSION.xsl ${_pkgroot}
+ install -dm755 ${_pkgroot}
+ install -m644 VERSION VERSION.xsl ${_pkgroot}
- for fn in assembly common eclipse epub epub3 fo highlighting html htmlhelp javahelp lib \
- manpages params profiling roundtrip template website xhtml xhtml-1_1 xhtml5; do
- install -dm755 ${_pkgroot}/${fn}
- install -m644 ${fn}/*.{xml,xsl,dtd,ent} ${_pkgroot}/${fn} || true # ignore missing files
- done
+ for fn in assembly common eclipse epub epub3 fo highlighting html htmlhelp javahelp lib \
+ manpages params profiling roundtrip template website xhtml xhtml-1_1 xhtml5; do
+ install -dm755 ${_pkgroot}/${fn}
+ install -m644 ${fn}/*.{xml,xsl,dtd,ent} ${_pkgroot}/${fn} || true # ignore missing files
+ done
- install -dm755 ${pkgdir}/etc/xml
- install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ install -dm755 "$pkgdir"/etc/xml
+ install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
-md5sums=('a88dbdc0cd74702656083b6e4e4241d8')
diff --git a/abs/extra/docbook-xsl/docbook-xsl.install b/abs/extra/docbook-xsl/docbook-xsl.install
index c84d929..aa386ec 100644
--- a/abs/extra/docbook-xsl/docbook-xsl.install
+++ b/abs/extra/docbook-xsl/docbook-xsl.install
@@ -5,19 +5,29 @@ post_install() {
_NEW=`echo $1 | sed 's|\(.*\)\-.*|\1|'`
xmlcatalog --noout --add "rewriteSystem" \
- "http://docbook.sourceforge.net/release/xsl/${_NEW}" \
+ "http://cdn.docbook.org/release/xsl/${_NEW}" \
"/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \
etc/xml/catalog
xmlcatalog --noout --add "rewriteURI" \
- "http://docbook.sourceforge.net/release/xsl/${_NEW}" \
+ "http://cdn.docbook.org/release/xsl/${_NEW}" \
"/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \
- etc/xml/catalog &&
+ etc/xml/catalog
+
+ xmlcatalog --noout --add "rewriteSystem" \
+ "http://cdn.docbook.org/release/xsl/current" \
+ "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \
+ etc/xml/catalog
+
+ xmlcatalog --noout --add "rewriteURI" \
+ "http://cdn.docbook.org/release/xsl/current" \
+ "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \
+ etc/xml/catalog
xmlcatalog --noout --add "rewriteSystem" \
"http://docbook.sourceforge.net/release/xsl/current" \
"/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \
- etc/xml/catalog &&
+ etc/xml/catalog
xmlcatalog --noout --add "rewriteURI" \
"http://docbook.sourceforge.net/release/xsl/current" \
diff --git a/abs/extra/dune/PKGBUILD b/abs/extra/dune/PKGBUILD
new file mode 100644
index 0000000..90a7287
--- /dev/null
+++ b/abs/extra/dune/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Bruno Pagani <archange@archlinux.org>
+# Contributor: Jakob Gahde <j5lx@fmail.co.uk>
+
+pkgname=dune
+pkgver=1.7.1
+pkgrel=1
+pkgdesc="A composable build system for OCaml (formerly jbuilder)"
+arch=('x86_64')
+url="https://github.com/ocaml/dune"
+license=('Apache')
+depends=('glibc' 'ocaml' 'ocaml-findlib')
+provides=('jbuilder')
+conflicts=('jbuilder')
+replaces=('jbuilder')
+source=(${pkgname}-${pkgver}.tar.gz::"${url}/archive/${pkgver}.tar.gz")
+sha256sums=('b821a9aa08bb6a43ad77a1f5e51806129fd82e77af507df489ac95699451566b')
+
+build() {
+ cd ${pkgname}-${pkgver}
+ make release
+}
+
+# Tests requires a bunch of (currently) unpackaged dependencies
+#check() {
+# cd ${pkgname}-${pkgver/b/-beta}
+# make test
+#}
+
+package() {
+ cd ${pkgname}-${pkgver}
+
+ make DESTDIR="${pkgdir}" INSTALL_ARGS="--prefix=/usr --libdir='$(ocamlfind printconf destdir)'" install
+
+ # Fix doc and man install
+ rm -r "${pkgdir}"/usr/doc
+ install -dm755 "${pkgdir}"/usr/share
+ mv "${pkgdir}"/usr/{man,share/}
+}
diff --git a/abs/extra/egl-wayland/10_nvidia_wayland.json b/abs/extra/egl-wayland/10_nvidia_wayland.json
new file mode 100644
index 0000000..c08a641
--- /dev/null
+++ b/abs/extra/egl-wayland/10_nvidia_wayland.json
@@ -0,0 +1,6 @@
+{
+ "file_format_version" : "1.0.0",
+ "ICD" : {
+ "library_path" : "libnvidia-egl-wayland.so.1"
+ }
+}
diff --git a/abs/extra/egl-wayland/PKGBUILD b/abs/extra/egl-wayland/PKGBUILD
new file mode 100644
index 0000000..89eb37b
--- /dev/null
+++ b/abs/extra/egl-wayland/PKGBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=egl-wayland
+pkgver=1.1.2
+pkgrel=1
+pkgdesc="EGLStream-based Wayland external platform"
+arch=(x86_64)
+url=https://github.com/NVIDIA/egl-wayland
+license=(MIT)
+depends=(wayland eglexternalplatform)
+makedepends=(meson git)
+_commit=c81f849fc08e36fc5b94031b6edc361ab5027fce # master
+source=("git+$url#commit=$_commit"
+ 10_nvidia_wayland.json)
+sha256sums=('SKIP'
+ '5cccf1905a266e8e34d5ad4aad4be85390e60b1a0850a29dd9d64adc641de412')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+ git tag -f 1.1.2 c81f849fc08e36fc5b94031b6edc361ab5027fce # Fixup missing tag
+}
+
+build() {
+ arch-meson $pkgname build
+ ninja -C build
+}
+
+check() {
+ cd build
+ meson test
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dt "$pkgdir/usr/share/egl/egl_external_platform.d" -m644 10_nvidia_wayland.json
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgname/COPYING
+}
+
+# vim:set sw=2 et:
diff --git a/abs/extra/eglexternalplatform/PKGBUILD b/abs/extra/eglexternalplatform/PKGBUILD
new file mode 100644
index 0000000..c163baa
--- /dev/null
+++ b/abs/extra/eglexternalplatform/PKGBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=eglexternalplatform
+pkgver=1.0+3+g7c8f8e2
+pkgrel=1
+pkgdesc="EGL External Platform interface"
+url=https://github.com/NVIDIA/eglexternalplatform
+arch=(any)
+license=(MIT)
+depends=(mesa)
+makedepends=(git)
+_commit=7c8f8e2218e46b1a4aa9538520919747f1184d86 # master
+source=("git+$url#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+ git tag -f 1.0 53bf47ccd349b7525248687ba0058860168c8580 # Fixup missing tag
+}
+
+package() {
+ cd $pkgname
+ install -Dt "$pkgdir/usr/include/EGL" -m644 interface/*
+ install -Dt "$pkgdir/usr/share/pkgconfig" -m644 *.pc
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING
+}
+
+# vim:set sw=2 et:
diff --git a/abs/extra/emacs-nox/0001-Ignore-color-fonts-when-using-Xft.patch b/abs/extra/emacs-nox/0001-Ignore-color-fonts-when-using-Xft.patch
new file mode 100644
index 0000000..e171306
--- /dev/null
+++ b/abs/extra/emacs-nox/0001-Ignore-color-fonts-when-using-Xft.patch
@@ -0,0 +1,72 @@
+From f21fa142aca53e3de5783e1ce6fe1bf116174aeb Mon Sep 17 00:00:00 2001
+From: Robert Pluim <rpluim@gmail.com>
+Date: Tue, 3 Apr 2018 11:06:01 +0200
+Subject: [PATCH] Ignore color fonts when using Xft
+
+* src/font.c (syms_of_font): New configuration variable
+xft-ignore-color-fonts, default t.
+* src/ftfont.c (ftfont_spec_pattern): Tell fontconfig to ignore
+color fonts if xft-ignore-color-fonts is t. (Bug#30874, Bug#30045)
+* etc/NEWS: Document xft-ignore-color-fonts.
+---
+ etc/NEWS | 6 ++++++
+ src/font.c | 7 +++++++
+ src/ftfont.c | 7 +++++++
+ 3 files changed, 20 insertions(+)
+
+diff --git a/etc/NEWS b/etc/NEWS
+index 873e2dfd1d..2bec8de0ea 100644
+--- a/etc/NEWS
++++ b/etc/NEWS
+@@ -31,6 +31,12 @@ in its NEWS.)
+
+ * Changes in Emacs 26.2
+
++---
++** New variable 'xft-ignore-color-fonts'.
++Default t means don't try to load color fonts when using Xft, as they
++often cause crashes. Set it to nil if you really need those fonts.
++(Bug#30874)
++
+
+ * Editing Changes in Emacs 26.2
+
+diff --git a/src/font.c b/src/font.c
+index e53935a15c..305bb14576 100644
+--- a/src/font.c
++++ b/src/font.c
+@@ -5476,6 +5476,13 @@ Disabling compaction of font caches might enlarge the Emacs memory
+ footprint in sessions that use lots of different fonts. */);
+ inhibit_compacting_font_caches = 0;
+
++ DEFVAR_BOOL ("xft-ignore-color-fonts",
++ Vxft_ignore_color_fonts,
++ doc: /*
++Non-nil means don't query fontconfig for color fonts, since they often
++cause Xft crashes. Only has an effect in Xft builds. */);
++ Vxft_ignore_color_fonts = 1;
++
+ #ifdef HAVE_WINDOW_SYSTEM
+ #ifdef HAVE_FREETYPE
+ syms_of_ftfont ();
+diff --git a/src/ftfont.c b/src/ftfont.c
+index c2e093e633..24a92dd52e 100644
+--- a/src/ftfont.c
++++ b/src/ftfont.c
+@@ -764,6 +764,13 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
+ if (scalable >= 0
+ && ! FcPatternAddBool (pattern, FC_SCALABLE, scalable ? FcTrue : FcFalse))
+ goto err;
++#ifdef HAVE_XFT
++ /* We really don't like color fonts, they cause Xft crashes. See
++ Bug#30874. */
++ if (Vxft_ignore_color_fonts
++ && ! FcPatternAddBool(pattern, FC_COLOR, FcFalse))
++ goto err;
++#endif
+
+ goto finish;
+
+--
+2.17.1
+
diff --git a/abs/extra/emacs-nox/0001-Port-FC_COLOR-change-to-older-fontconfig.patch b/abs/extra/emacs-nox/0001-Port-FC_COLOR-change-to-older-fontconfig.patch
new file mode 100644
index 0000000..ba14df6
--- /dev/null
+++ b/abs/extra/emacs-nox/0001-Port-FC_COLOR-change-to-older-fontconfig.patch
@@ -0,0 +1,32 @@
+From 97d61f878e6378efbde73923a36f71caac73a4a0 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <eggert@cs.ucla.edu>
+Date: Tue, 3 Apr 2018 08:12:41 -0700
+Subject: [PATCH] Port FC_COLOR change to older fontconfig
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Problem reported by John ff in:
+https://lists.gnu.org/r/emacs-devel/2018-04/msg00058.html
+* src/ftfont.c (ftfont_spec_pattern) [!FC_COLOR]:
+Don’t use FC_COLOR on older fontconfigs that don’t have it.
+---
+ src/ftfont.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ftfont.c b/src/ftfont.c
+index 24a92dd52e..84e4a30389 100644
+--- a/src/ftfont.c
++++ b/src/ftfont.c
+@@ -764,7 +764,7 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
+ if (scalable >= 0
+ && ! FcPatternAddBool (pattern, FC_SCALABLE, scalable ? FcTrue : FcFalse))
+ goto err;
+-#ifdef HAVE_XFT
++#if defined HAVE_XFT && defined FC_COLOR
+ /* We really don't like color fonts, they cause Xft crashes. See
+ Bug#30874. */
+ if (Vxft_ignore_color_fonts
+--
+2.17.1
+
diff --git a/abs/extra/emacs-nox/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch b/abs/extra/emacs-nox/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch
new file mode 100644
index 0000000..8cc1fcc
--- /dev/null
+++ b/abs/extra/emacs-nox/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch
@@ -0,0 +1,25 @@
+From acaebed014951fdd13855aa7bba9aee60618785f Mon Sep 17 00:00:00 2001
+From: Eli Zaretskii <eliz@gnu.org>
+Date: Tue, 3 Apr 2018 19:59:40 +0300
+Subject: [PATCH] ; * src/ftfont.c (ftfont_spec_pattern): Fix whitespace.
+
+---
+ src/ftfont.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ftfont.c b/src/ftfont.c
+index 84e4a30389..8f048d2983 100644
+--- a/src/ftfont.c
++++ b/src/ftfont.c
+@@ -768,7 +768,7 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
+ /* We really don't like color fonts, they cause Xft crashes. See
+ Bug#30874. */
+ if (Vxft_ignore_color_fonts
+- && ! FcPatternAddBool(pattern, FC_COLOR, FcFalse))
++ && ! FcPatternAddBool (pattern, FC_COLOR, FcFalse))
+ goto err;
+ #endif
+
+--
+2.17.1
+
diff --git a/abs/extra/emacs-nox/PKGBUILD b/abs/extra/emacs-nox/PKGBUILD
new file mode 100644
index 0000000..512da23
--- /dev/null
+++ b/abs/extra/emacs-nox/PKGBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Jaroslav Lichtblau <svetlemodry@archlinux.org>
+# Contributor: Chris Brannon <cmbrannon@cox.net>
+
+pkgname=emacs-nox
+pkgver=26.1
+pkgrel=1
+pkgdesc="The extensible, customizable, self-documenting real-time display editor, without X11 support"
+arch=('x86_64')
+url="http://www.gnu.org/software/emacs/emacs.html"
+license=('GPL3')
+depends=('dbus' 'ncurses' 'perl' 'libxml2' 'glib2' 'gnutls')
+provides=('emacs')
+conflicts=('emacs')
+changelog=$pkgname.changelog
+source=(ftp://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz{,.sig}
+ 0001-Ignore-color-fonts-when-using-Xft.patch
+ 0001-Port-FC_COLOR-change-to-older-fontconfig.patch
+ 0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch)
+validpgpkeys=('28D3BED851FDF3AB57FEF93C233587A47C207910')
+sha256sums=('1cf4fc240cd77c25309d15e18593789c8dbfba5c2b44d8f77c886542300fd32c'
+ 'SKIP'
+ '5bc53171bbb82e6dea26950f14da6a06f4371162b3bccb624397365e6e02f480'
+ '6d16de2078108d742a8935044926f439869e231cc18ec23777bbed4857625f96'
+ 'ca48398d6a83e9a22a4117beca151f476e6286a9abbfddd0f7c0f187ebfc50d7')
+
+prepare() {
+ cd "${srcdir}"/emacs-$pkgver
+
+ patch -Np1 -i "${srcdir}/0001-Ignore-color-fonts-when-using-Xft.patch"
+ patch -Np1 -i "${srcdir}/0001-Port-FC_COLOR-change-to-older-fontconfig.patch"
+ patch -Np1 -i "${srcdir}/0001-src-ftfont.c-ftfont_spec_pattern-Fix-whitespace.patch"
+}
+
+build() {
+ cd "${srcdir}"/emacs-$pkgver
+
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --without-x --without-sound --with-modules
+ make
+}
+
+package() {
+ cd "${srcdir}"/emacs-$pkgver
+
+ make DESTDIR="${pkgdir}" install
+
+# remove conflict with ctags package
+ mv "${pkgdir}"/usr/bin/{ctags,ctags.emacs}
+ mv "${pkgdir}"/usr/share/man/man1/{ctags.1.gz,ctags.emacs.1}
+
+# fix user/root permissions on usr/share files
+ find "${pkgdir}"/usr/share/emacs/$pkgver -exec chown root.root {} \;
+# remove .desktop file and icons
+ rm -rf "${pkgdir}"/usr/share/{applications,icons}
+}
diff --git a/abs/extra/emacs-nox/emacs-nox.changelog b/abs/extra/emacs-nox/emacs-nox.changelog
new file mode 100644
index 0000000..3c9ad91
--- /dev/null
+++ b/abs/extra/emacs-nox/emacs-nox.changelog
@@ -0,0 +1,56 @@
+2018-07-08 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 26.1-1
+
+2017-09-12 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 25.3-1
+
+2017-04-25 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 25.2-1
+
+2016-09-19 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 25.1-1
+
+2016-05-01 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.5-4 pacman hooks rebuild
+
+2016-01-24 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.5-3 FS#47841 fix
+
+2015-05-15 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.5-1
+
+2014-10-24 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.4-2 FS#42514 fix
+
+2014-10-21 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.4-1
+
+2013-04-20 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.3-1
+
+2012-09-12 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.2-1
+
+2012-06-12 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 24.1-1
+
+2011-03-13 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * emacs-nox 23.3-1
+
+2010-05-12 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * Update to major release 23.2
+
+2010-03-17 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * 23.1-2 - fix for FS#18688 - [emacs-nox] compiled with SSE2 instructions
+
+2009-12-18 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * Update to major release 23.1
+
+2008-11-01 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * New PKGBUILD/install method provided by Chris Brannon <cmbrannon@cox.net>
+ * => Added an install script
+ * => Info files are now installed using install-info
+
+2008-09-08 Jaroslav Lichtblau <svetlemodry@archlinux.org>
+ * Package moved to [community]
+ * Update to major release 22.3
diff --git a/abs/extra/ffmpeg2.8/PKGBUILD b/abs/extra/ffmpeg2.8/PKGBUILD
index 155f869..af63a60 100644
--- a/abs/extra/ffmpeg2.8/PKGBUILD
+++ b/abs/extra/ffmpeg2.8/PKGBUILD
@@ -6,7 +6,7 @@
# Contributor: Paul Mattal <paul@archlinux.org>
pkgname=ffmpeg2.8
-pkgver=2.8.14
+pkgver=2.8.15
pkgrel=1
pkgdesc='Complete solution to record, convert and stream audio and video'
arch=('i686' 'x86_64')
@@ -103,7 +103,7 @@ package() {
# vim: ts=2 sw=2 et:
-md5sums=('f4cd8689ede550872a02802aecae8109'
+md5sums=('9c5f5d9a3aeaa6ff1f2514cc509d3f07'
'SKIP'
'83bc99a06f1ca6fd70ed35056937a522'
'6c1e7519c3b5d414ca98ad624691517d'
diff --git a/abs/extra/ffnvcodec-headers/PKGBUILD b/abs/extra/ffnvcodec-headers/PKGBUILD
new file mode 100644
index 0000000..c496cda
--- /dev/null
+++ b/abs/extra/ffnvcodec-headers/PKGBUILD
@@ -0,0 +1,26 @@
+# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
+# Contributor: Daniel Bermond <danielbermond@yahoo.com>
+
+pkgname=ffnvcodec-headers
+pkgver=8.2.15.6
+pkgrel=1
+pkgdesc='FFmpeg version of headers required to interface with Nvidias codec APIs'
+arch=('any')
+url='https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git'
+license=('MIT')
+makedepends=('git')
+source=("git+https://git.videolan.org/git/ffmpeg/nv-codec-headers.git#tag=n${pkgver}")
+sha256sums=('SKIP')
+
+build() {
+ make PREFIX='/usr' -C nv-codec-headers
+ sed -n '4,25p' nv-codec-headers/include/ffnvcodec/nvEncodeAPI.h > LICENSE # Extract license
+ sed -i '1,22s/^.\{,3\}//' LICENSE # Delete C comments
+}
+
+package() {
+ make PREFIX='/usr' DESTDIR="${pkgdir}" -C nv-codec-headers install
+ install -Dm 644 LICENSE -t "${pkgdir}"/usr/share/licenses/ffnvcodec-headers/
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/fmt/PKGBUILD b/abs/extra/fmt/PKGBUILD
new file mode 100644
index 0000000..2f41904
--- /dev/null
+++ b/abs/extra/fmt/PKGBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
+# Contributor: Mihai Bişog <mihai.bisog@gmail.com>
+pkgname=fmt
+pkgver=5.3.0
+pkgrel=1
+pkgdesc='Open-source formatting library for C++'
+arch=(x86_64)
+url='http://fmtlib.net'
+license=(BSD)
+makedepends=(
+ cmake
+ git
+ ninja
+)
+provides=(libfmt.so)
+
+source=(git+https://github.com/fmtlib/fmt.git#tag=${pkgver})
+sha256sums=(SKIP)
+
+prepare() {
+ if [[ -d build ]]; then
+ rm -rf build
+ fi
+ mkdir build
+}
+
+build() {
+ cd build
+
+ cmake ../fmt \
+ -G Ninja \
+ -DCMAKE_BUILD_TYPE='Release' \
+ -DCMAKE_INSTALL_PREFIX='/usr' \
+ -DCMAKE_INSTALL_LIBDIR='/usr/lib' \
+ -DBUILD_SHARED_LIBS='1'
+ cmake --build .
+}
+
+check() {
+ cmake --build build --target test
+}
+
+package() {
+ DESTDIR="${pkgdir}" cmake --build build --target install
+ install -Dm 644 fmt/LICENSE.rst -t "${pkgdir}"/usr/share/licenses/fmt
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/gcab/PKGBUILD b/abs/extra/gcab/PKGBUILD
new file mode 100644
index 0000000..6eaa571
--- /dev/null
+++ b/abs/extra/gcab/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gcab
+pkgver=1.2
+pkgrel=1
+pkgdesc="A GObject library to create cabinet files"
+url="https://wiki.gnome.org/msitools"
+arch=(x86_64)
+license=(LGPL)
+depends=(glib2)
+makedepends=(gobject-introspection vala zlib git gtk-doc meson)
+_commit=8484568d2e5b55a87cb6d6925ccb2f655159cf99 # tags/v1.2^0
+source=("git+https://gitlab.gnome.org/GNOME/gcab.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/^v//;s/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+}
+
+build() {
+ arch-meson $pkgname build
+ ninja -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
diff --git a/abs/extra/glances/PKGBUILD b/abs/extra/glances/PKGBUILD
index 16562fa..e2e29e1 100644
--- a/abs/extra/glances/PKGBUILD
+++ b/abs/extra/glances/PKGBUILD
@@ -3,7 +3,7 @@
# Contributor: Francois Boulogne <fboulogne at april dot org>
pkgname=glances
-pkgver=3.0.2
+pkgver=3.1.0
pkgrel=1
pkgdesc='CLI curses-based monitoring tool'
arch=('any')
@@ -19,7 +19,7 @@ optdepends=('hddtemp: HDD temperature monitoring support'
'python-zeroconf: for the autodiscover mode')
source=("https://github.com/nicolargo/glances/archive/v${pkgver}.tar.gz"
'glances.service')
-sha512sums=('f86aa285e803c38a852eca6782642c0a854fdb14ae938e22482288d39045d2e6b42040409f5ba323784d3bd9a32386b90964b074d5a65cd03d904bde0ec941d3'
+sha512sums=('a888cafa5987ab7a88caa0248e0cb3d9f65466d71ee8f1ca63565c5a8a59282be77c14f29afb2302fba0e79294c39e96384791cd89d23aa7727bfd4f20e2814d'
'49f0d185a37a5c5837e5beb463770c943ede40b2f1b8405e338129e897e97d9fc58373a8586fabc506266e6343cfea3c91b9787ac6832cc97a1ab63d6ad058d4')
package() {
diff --git a/abs/extra/google-chrome/.SRCINFO b/abs/extra/google-chrome/.SRCINFO
new file mode 100644
index 0000000..c524c00
--- /dev/null
+++ b/abs/extra/google-chrome/.SRCINFO
@@ -0,0 +1,32 @@
+pkgbase = google-chrome
+ pkgdesc = The popular and trusted web browser by Google (Stable Channel)
+ pkgver = 72.0.3626.119
+ pkgrel = 1
+ url = https://www.google.com/chrome
+ install = google-chrome.install
+ arch = x86_64
+ license = custom:chrome
+ depends = alsa-lib
+ depends = gtk3
+ depends = libcups
+ depends = libxss
+ depends = libxtst
+ depends = nss
+ optdepends = kdialog: for file dialogs in KDE
+ optdepends = gnome-keyring: for storing passwords in GNOME keyring
+ optdepends = kwallet: for storing passwords in KWallet
+ optdepends = gtk3-print-backends: for printing
+ optdepends = libunity: for download progress on KDE
+ optdepends = ttf-liberation: fix fonts for some PDFs (CRBug #369991)
+ optdepends = xdg-utils
+ options = !emptydirs
+ options = !strip
+ source = google-chrome-stable_72.0.3626.119_amd64.deb::https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
+ source = eula_text.html
+ source = google-chrome-stable.sh
+ md5sums = 337c55d76bc54503cbadaa8d67e05446
+ md5sums = d50d8f0a6940791eabc41c4f64e6a3cf
+ md5sums = ed4cf73982461af7d0d944c1cbf9f4e8
+
+pkgname = google-chrome
+
diff --git a/abs/extra/google-chrome/PKGBUILD b/abs/extra/google-chrome/PKGBUILD
index 222c16a..f483bde 100644
--- a/abs/extra/google-chrome/PKGBUILD
+++ b/abs/extra/google-chrome/PKGBUILD
@@ -5,7 +5,7 @@
# or use: $ curl -s https://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/other.xml.gz | gzip -df | awk -F\" '/pkgid/{ sub(".*-","",$4); print $4": "$10 }'
pkgname=google-chrome
-pkgver=70.0.3538.67
+pkgver=72.0.3626.119
pkgrel=1
pkgdesc="The popular and trusted web browser by Google (Stable Channel)"
arch=('x86_64')
@@ -55,6 +55,6 @@ package() {
rm -r "$pkgdir"/etc/cron.daily/ "$pkgdir"/opt/google/chrome/cron/
rm "$pkgdir"/opt/google/chrome/product_logo_*.png
}
-md5sums=('297579a04aadce6ea9502e536e44edd3'
+md5sums=('337c55d76bc54503cbadaa8d67e05446'
'd50d8f0a6940791eabc41c4f64e6a3cf'
'ed4cf73982461af7d0d944c1cbf9f4e8')
diff --git a/abs/extra/google-chrome/update_version.sh b/abs/extra/google-chrome/update_version.sh
new file mode 100755
index 0000000..0a11328
--- /dev/null
+++ b/abs/extra/google-chrome/update_version.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -euxo pipefail
+
+# Get channel
+CHANNEL=$(awk -F '=' '/^_channel/{ print $2 }' PKGBUILD)
+PKG="google-chrome-${CHANNEL}"
+
+# Get latest version
+VER=$(curl -sL "https://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/other.xml.gz" | gzip -df |
+ tr ' ' '\n' | grep -e name= -e ver= | cut -d '"' -f2 | sed 'N;s/\n/ /' |
+ grep "${PKG}" | cut -d ' ' -f 2)
+
+# Insert latest version into PKGBUILD and update hashes
+sed -i \
+ -e "s/^pkgver=.*/pkgver=${VER}/" \
+ -e 's/pkgrel=.*/pkgrel=1/' \
+ PKGBUILD
+updpkgsums
+
+# Check whether this changed anything
+if (git diff --exit-code PKGBUILD); then
+ echo "Package ${PKG} has most recent version ${VER}"
+ exit 0
+fi
+
+# Update .SRCINFO
+makepkg --printsrcinfo >.SRCINFO
+
+# Commit changes
+git add PKGBUILD .SRCINFO
+git commit -m "${PKG} v${VER}"
diff --git a/abs/extra/gtk-doc/PKGBUILD b/abs/extra/gtk-doc/PKGBUILD
index 2f9a6f1..6d710d3 100644
--- a/abs/extra/gtk-doc/PKGBUILD
+++ b/abs/extra/gtk-doc/PKGBUILD
@@ -1,27 +1,43 @@
-# $Id: PKGBUILD 139346 2011-10-01 18:59:04Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gtk-doc
-pkgver=1.18
+pkgver=1.29
pkgrel=1
pkgdesc="Documentation tool for public library API"
-arch=('any')
-license=('GPL' 'FDL')
-depends=('docbook-xsl' 'gnome-doc-utils' 'perl')
-makedepends=('pkgconfig' 'jade')
-optdepends=('jade: SGML support')
-url="http://www.gtk.org/gtk-doc/"
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('785b591c561be1c8206f0d2575dc63558ea6199c3afe49cbc4efde94a6629a20')
+url="https://www.gtk.org/gtk-doc/"
+arch=(any)
+license=(GPL FDL)
+depends=(docbook-xsl docbook-xml source-highlight glib2-docs python-lxml
+ python-pygments python-anytree)
+makedepends=(dblatex git yelp-tools)
+checkdepends=(bc gtk3 python-six)
+optdepends=('dblatex: PDF support')
+_commit=7db567e83fe5d2d0659560c6dfb25ee27b338140 # tags/GTK_DOC_1_29^0
+source=("git+https://gitlab.gnome.org/GNOME/gtk-doc.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed -e 's/GTK_DOC_//' -e 's/_/\./g' -e 's/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+ NOCONFIGURE=1 ./autogen.sh
+}
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- export PYTHON=/usr/bin/python2
- ./configure --prefix=/usr
+ cd $pkgname
+ ./configure --prefix=/usr --disable-static
make
}
+check() {
+ cd $pkgname
+ make check
+}
+
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install
+ cd $pkgname
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/gtk3/0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch b/abs/extra/gtk3/0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch
deleted file mode 100644
index d187d40..0000000
--- a/abs/extra/gtk3/0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From affd6e70734d7897324409d6fc0beb7b4eb7235a Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Wed, 6 Jan 2016 14:54:33 -0500
-Subject: [PATCH 1/2] x11: Only do cursor name fallback for standard names
-
-Always returning a left_ptr if we can't find anything better
-broke firefox application-specific fallback for missing cursors.
-Keep that working by only doing the fallback for the CSS cursor
-names, not for things like hashes.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=760141
----
- gdk/x11/gdkcursor-x11.c | 24 ++++++++++++++++++++----
- 1 file changed, 20 insertions(+), 4 deletions(-)
-
-diff --git a/gdk/x11/gdkcursor-x11.c b/gdk/x11/gdkcursor-x11.c
-index 540f48e..d619f58 100644
---- a/gdk/x11/gdkcursor-x11.c
-+++ b/gdk/x11/gdkcursor-x11.c
-@@ -611,17 +611,23 @@ static const struct {
- const gchar *css_name, *traditional_name;
- } name_map[] = {
- { "default", "left_ptr" },
-+ { "help", "left_ptr" },
-+ { "context-menu", "left_ptr" },
- { "pointer", "hand" },
- { "progress", "left_ptr_watch" },
- { "wait", "watch" },
- { "cell", "crosshair" },
- { "crosshair", "cross" },
- { "text", "xterm" },
-+ { "vertical-text","xterm" },
- { "alias", "dnd-link" },
- { "copy", "dnd-copy" },
-+ { "move", "dnd-move" },
- { "no-drop", "dnd-none" },
- { "not-allowed", "crossed_circle" },
- { "grab", "hand2" },
-+ { "grabbing", "hand2" },
-+ { "all-scroll", "left_ptr" },
- { "col-resize", "h_double_arrow" },
- { "row-resize", "v_double_arrow" },
- { "n-resize", "top_side" },
-@@ -636,6 +642,8 @@ static const struct {
- { "ns-resize", "v_double_arrow" },
- { "nesw-resize", "fd_double_arrow" },
- { "nwse-resize", "bd_double_arrow" },
-+ { "zoom-in", "left_ptr" },
-+ { "zoom-out", "left_ptr" },
- { NULL, NULL }
- };
-
-@@ -650,7 +658,7 @@ name_fallback (const gchar *name)
- return name_map[i].traditional_name;
- }
-
-- return "left_ptr";
-+ return NULL;
- }
-
- GdkCursor*
-@@ -683,9 +691,17 @@ _gdk_x11_display_get_cursor_for_name (GdkDisplay *display,
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- xcursor = XcursorLibraryLoadCursor (xdisplay, name);
- if (xcursor == None)
-- xcursor = XcursorLibraryLoadCursor (xdisplay, name_fallback (name));
-- if (xcursor == None)
-- xcursor = XcursorLibraryLoadCursor (xdisplay, "left_ptr");
-+ {
-+ const char *fallback;
-+
-+ fallback = name_fallback (name);
-+ if (fallback)
-+ {
-+ xcursor = XcursorLibraryLoadCursor (xdisplay, fallback);
-+ if (xcursor == None)
-+ xcursor = XcursorLibraryLoadCursor (xdisplay, "left_ptr");
-+ }
-+ }
- if (xcursor == None)
- return NULL;
- }
---
-2.7.0
-
diff --git a/abs/extra/gtk3/0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch b/abs/extra/gtk3/0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch
deleted file mode 100644
index 94b69fb..0000000
--- a/abs/extra/gtk3/0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 81a287478a4db9ce650cc764474b9c173b137dee Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Wed, 6 Jan 2016 14:56:06 -0500
-Subject: [PATCH 2/2] wayland: Only do cursor name fallback for standard names
-
-Always returning a left_ptr if we can't find anything better
-broke firefox application-specific fallback for missing cursors.
-Keep that working by only doing the fallback for the CSS cursor
-names, not for things like hashes.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=760141
----
- gdk/wayland/gdkcursor-wayland.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/gdk/wayland/gdkcursor-wayland.c b/gdk/wayland/gdkcursor-wayland.c
-index 8aee5ae..bdfa316 100644
---- a/gdk/wayland/gdkcursor-wayland.c
-+++ b/gdk/wayland/gdkcursor-wayland.c
-@@ -87,17 +87,23 @@ static const struct {
- const gchar *css_name, *traditional_name;
- } name_map[] = {
- { "default", "left_ptr" },
-+ { "help", "left_ptr" },
-+ { "context-menu", "left_ptr" },
- { "pointer", "hand" },
- { "progress", "left_ptr_watch" },
- { "wait", "watch" },
- { "cell", "crosshair" },
- { "crosshair", "cross" },
- { "text", "xterm" },
-+ { "vertical-text","xterm" },
- { "alias", "dnd-link" },
- { "copy", "dnd-copy" },
-+ { "move", "dnd-move" },
- { "no-drop", "dnd-none" },
- { "not-allowed", "crossed_circle" },
- { "grab", "hand2" },
-+ { "grabbing", "hand2" },
-+ { "all-scroll", "left_ptr" },
- { "col-resize", "h_double_arrow" },
- { "row-resize", "v_double_arrow" },
- { "n-resize", "top_side" },
-@@ -112,6 +118,8 @@ static const struct {
- { "ns-resize", "v_double_arrow" },
- { "nesw-resize", "fd_double_arrow" },
- { "nwse-resize", "bd_double_arrow" },
-+ { "zoom-in", "left_ptr" },
-+ { "zoom-out", "left_ptr" },
- { NULL, NULL }
- };
-
-@@ -126,7 +134,7 @@ name_fallback (const gchar *name)
- return name_map[i].traditional_name;
- }
-
-- return "left_ptr";
-+ return NULL;
- }
-
- static gboolean
-@@ -144,17 +152,22 @@ _gdk_wayland_cursor_update (GdkWaylandDisplay *wayland_display,
- cursor->scale);
- c = wl_cursor_theme_get_cursor (theme, cursor->name);
- if (!c)
-- c = wl_cursor_theme_get_cursor (theme, name_fallback (cursor->name));
-+ {
-+ const char *fallback;
-+
-+ fallback = name_fallback (cursor->name);
-+ if (fallback)
-+ {
-+ c = wl_cursor_theme_get_cursor (theme, name_fallback (cursor->name));
-+ if (!c)
-+ c = wl_cursor_theme_get_cursor (theme, "left_ptr");
-+ }
-+ }
-
- if (!c)
- {
- g_warning (G_STRLOC ": Unable to load %s from the cursor theme", cursor->name);
--
-- /* return the left_ptr cursor as a fallback */
-- c = wl_cursor_theme_get_cursor (theme, "left_ptr");
--
-- if (!c)
-- return FALSE;
-+ return FALSE;
- }
-
- cursor->wl_cursor = c;
---
-2.7.0
-
diff --git a/abs/extra/gtk3/PKGBUILD b/abs/extra/gtk3/PKGBUILD
index 15dc342..bd062d0 100644
--- a/abs/extra/gtk3/PKGBUILD
+++ b/abs/extra/gtk3/PKGBUILD
@@ -1,74 +1,82 @@
-# $Id$
-# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
pkgbase=gtk3
pkgname=(gtk3 gtk-update-icon-cache)
-pkgver=3.18.6
-pkgrel=2
+pkgver=3.24.4+15+g80b5024239
+pkgrel=1
pkgdesc="GObject-based multi-platform GUI toolkit"
-arch=(i686 x86_64)
-url="http://www.gtk.org/"
-depends=(atk cairo libcups libxcursor libxinerama libxrandr libxi libepoxy gdk-pixbuf2
- libxcomposite libxdamage pango shared-mime-info colord at-spi2-atk wayland libxkbcommon
- adwaita-icon-theme json-glib rest librsvg)
-makedepends=(gobject-introspection libcanberra)
+arch=(x86_64)
+url="https://www.gtk.org/"
+depends=(atk cairo libxcursor libxinerama libxrandr libxi libepoxy gdk-pixbuf2 dconf
+ libxcomposite libxdamage pango shared-mime-info at-spi2-atk wayland libxkbcommon
+ adwaita-icon-theme json-glib librsvg wayland-protocols desktop-file-utils mesa
+ cantarell-fonts colord rest libcups libcanberra)
+makedepends=(gobject-introspection gtk-doc git glib2-docs sassc)
license=(LGPL)
-source=(https://download.gnome.org/sources/gtk+/${pkgver:0:4}/gtk+-$pkgver.tar.xz
- 0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch
- 0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch
- settings.ini)
-sha256sums=('78cabf0fd5a662f8723f62d5ac633072c76c557c1d700454c9c3deaa37e441ef'
- '0402c3b7801810beb0f24ad20e4fb2eb7519cf3984f39e093a6e2752a0f7d9de'
- '94722b06284e76f628fc8933617ac19c14f6775a5250fe3c382defab63d7b10e'
- '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202')
+_commit=80b5024239ee358ede8203666dfe9ea790a29b70 # gtk-3-24
+source=("git+https://gitlab.gnome.org/GNOME/gtk.git#commit=$_commit"
+ settings.ini
+ gtk-query-immodules-3.0.hook
+ gtk-update-icon-cache.hook
+ gtk-update-icon-cache.script)
+sha256sums=('SKIP'
+ '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202'
+ 'de46e5514ff39a7a65e01e485e874775ab1c0ad20b8e94ada43f4a6af1370845'
+ '496064a9dd6214bd58f689dd817dbdc4d7f17d42a8c9940a87018c3f829ce308'
+ 'f1d3a0dbfd82f7339301abecdbe5f024337919b48bd0e09296bb0e79863b2541')
-prepare() {
- cd gtk+-$pkgver
+pkgver() {
+ cd gtk
+ git describe --tags | sed 's/-/+/g'
+}
- # Fix zoom in/out cursors in GTK3 builds of Firefox
- # https://bugzilla.gnome.org/show_bug.cgi?id=760141
- patch -Np1 -i ../0001-x11-Only-do-cursor-name-fallback-for-standard-names.patch
- patch -Np1 -i ../0002-wayland-Only-do-cursor-name-fallback-for-standard-na.patch
+prepare() {
+ cd gtk
+ NOCONFIGURE=1 ./autogen.sh
}
build() {
- cd "gtk+-$pkgver"
+ cd gtk
- CXX=/bin/false ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --disable-schemas-compile \
- --enable-x11-backend \
- --enable-broadway-backend \
- --enable-wayland-backend
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-schemas-compile \
+ --enable-x11-backend \
+ --enable-broadway-backend \
+ --enable-wayland-backend \
+ --disable-gtk-doc
- #https://bugzilla.gnome.org/show_bug.cgi?id=655517
- sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ #https://bugzilla.gnome.org/show_bug.cgi?id=655517
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
- make
+ make
}
package_gtk3() {
- depends+=(gtk-update-icon-cache)
- optdepends=('libcanberra: gtk3-widget-factory demo')
- install=gtk3.install
+ depends+=(gtk-update-icon-cache)
+ provides=(gtk3-print-backends)
+ conflicts=(gtk3-print-backends)
+ replaces=("gtk3-print-backends<=3.22.26-1")
+ install=gtk3.install
+
+ DESTDIR="$pkgdir" make -C gtk install
- cd "gtk+-$pkgver"
- make DESTDIR="$pkgdir" install
- install -Dm644 ../settings.ini "$pkgdir/usr/share/gtk-3.0/settings.ini"
+ install -Dt "$pkgdir/usr/share/gtk-3.0" -m644 settings.ini
+ install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 gtk-query-immodules-3.0.hook
- # split this out to use with gtk2 too
- rm "$pkgdir/usr/bin/gtk-update-icon-cache"
+ # split this out to use with gtk2 too
+ mv "$pkgdir/usr/bin/gtk-update-icon-cache" "$srcdir"
}
package_gtk-update-icon-cache() {
- pkgdesc="GTK+ icon cache updater"
- depends=(gdk-pixbuf2 hicolor-icon-theme)
- install=gtk-update-icon-cache.install
+ pkgdesc="GTK+ icon cache updater"
+ depends=(gdk-pixbuf2 librsvg hicolor-icon-theme)
- cd gtk+-$pkgver/gtk
- install -Dm755 gtk-update-icon-cache "$pkgdir/usr/bin/gtk-update-icon-cache"
+ install -Dt "$pkgdir/usr/bin" gtk-update-icon-cache
+ install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 gtk-update-icon-cache.hook
+ install -D gtk-update-icon-cache.script "$pkgdir/usr/share/libalpm/scripts/gtk-update-icon-cache"
}
-# vim:set et sw=4:
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/gtk3/gtk-query-immodules-3.0.hook b/abs/extra/gtk3/gtk-query-immodules-3.0.hook
new file mode 100644
index 0000000..c7703cf
--- /dev/null
+++ b/abs/extra/gtk3/gtk-query-immodules-3.0.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/gtk-3.0/3.0.0/immodules/*.so
+
+[Action]
+Description = Probing GTK3 input method modules...
+When = PostTransaction
+Exec = /usr/bin/gtk-query-immodules-3.0 --update-cache
diff --git a/abs/extra/gtk3/gtk-update-icon-cache.hook b/abs/extra/gtk3/gtk-update-icon-cache.hook
new file mode 100644
index 0000000..fca3fdc
--- /dev/null
+++ b/abs/extra/gtk3/gtk-update-icon-cache.hook
@@ -0,0 +1,13 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/share/icons/*/
+Target = !usr/share/icons/*/?*
+
+[Action]
+Description = Updating icon theme caches...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/gtk-update-icon-cache
+NeedsTargets
diff --git a/abs/extra/gtk3/gtk-update-icon-cache.install b/abs/extra/gtk3/gtk-update-icon-cache.install
deleted file mode 100644
index 1afcc72..0000000
--- a/abs/extra/gtk3/gtk-update-icon-cache.install
+++ /dev/null
@@ -1,3 +0,0 @@
-post_install() {
- gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
-}
diff --git a/abs/extra/gtk3/gtk-update-icon-cache.script b/abs/extra/gtk3/gtk-update-icon-cache.script
new file mode 100644
index 0000000..ee0f1d1
--- /dev/null
+++ b/abs/extra/gtk3/gtk-update-icon-cache.script
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+while read -r f; do
+ if [[ -e ${f}index.theme ]]; then
+ gtk-update-icon-cache -q "$f"
+ elif [[ -d $f ]]; then
+ rm -f "${f}icon-theme.cache"
+ rmdir --ignore-fail-on-non-empty "$f"
+ fi
+done
diff --git a/abs/extra/gtk3/gtk3.install b/abs/extra/gtk3/gtk3.install
index f57b1bf..c0c4453 100644
--- a/abs/extra/gtk3/gtk3.install
+++ b/abs/extra/gtk3/gtk3.install
@@ -1,18 +1,3 @@
-post_install() {
- /usr/bin/gtk-query-immodules-3.0 --update-cache
- /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas
- /usr/bin/gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
-}
-
-post_upgrade() {
- post_install
-}
-
pre_remove() {
rm -f /usr/lib/gtk-3.0/3.0.0/immodules.cache
}
-
-post_remove() {
- /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas
- /usr/bin/gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
-}
diff --git a/abs/extra/handbrake/PKGBUILD b/abs/extra/handbrake/PKGBUILD
index bf66a04..3b902e4 100644
--- a/abs/extra/handbrake/PKGBUILD
+++ b/abs/extra/handbrake/PKGBUILD
@@ -1,20 +1,22 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Sebastien Piccand <sebcactus gmail com>
pkgname=('handbrake' 'handbrake-cli')
-pkgver=1.0.7
-pkgrel=2
-arch=('i686' 'x86_64')
+pkgver=1.2.0
+pkgrel=1
+arch=('x86_64')
url="https://handbrake.fr/"
license=('GPL')
-makedepends=('intltool' 'python2' 'yasm' 'wget' 'cmake' 'bzip2' 'gcc-libs'
+makedepends=('intltool' 'python2' 'nasm' 'wget' 'cmake' 'bzip2' 'gcc-libs' 'xz'
'zlib' 'libnotify' 'gst-plugins-base' 'gtk3' 'dbus-glib' 'libass'
'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora' 'libsamplerate'
- 'x264' 'libx264' 'jansson' 'librsvg' 'libgudev')
-source=(https://handbrake.fr/mirror/HandBrake-$pkgver.tar.bz2)
-sha256sums=('ffdee112f0288f0146b965107956cd718408406b75db71c44d2188f5296e677f')
+ 'speex' 'x264' 'jansson' 'librsvg' 'libgudev')
+source=(https://download.handbrake.fr/releases/$pkgver/HandBrake-$pkgver-source.tar.bz2
+ https://github.com/HandBrake/HandBrake/releases/download/$pkgver/HandBrake-$pkgver-source.tar.bz2.sig)
+sha256sums=('113b398a50147d48c8777e6ff2c4de6825af5f1079b3822e41bf0eacec9c940d'
+ 'SKIP')
+validpgpkeys+=('1629C061B3DDE7EB4AE34B81021DB8B44E4A8645') # HandBrake Team <developers@handbrake.fr>
build() {
cd "$srcdir/HandBrake-$pkgver"
@@ -26,8 +28,8 @@ build() {
package_handbrake() {
pkgdesc="Multithreaded video transcoder"
depends=('bzip2' 'gcc-libs' 'zlib' 'gst-plugins-base' 'libnotify' 'dbus-glib'
- 'gtk3' 'libass' 'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora'
- 'libsamplerate' 'libx264' 'jansson' 'librsvg' 'libgudev'
+ 'gtk3' 'xz' 'libass' 'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora'
+ 'libsamplerate' 'speex' 'x264' 'jansson' 'librsvg' 'libgudev'
'desktop-file-utils' 'hicolor-icon-theme')
optdepends=('gst-plugins-good: for video previews'
'gst-libav: for video previews'
@@ -41,8 +43,8 @@ package_handbrake() {
package_handbrake-cli() {
pkgdesc="Multithreaded video transcoder (CLI)"
- depends=('bzip2' 'gcc-libs' 'zlib' 'libass' 'lame' 'libxml2' 'opus'
- 'libvorbis' 'libtheora' 'libsamplerate' 'libx264' 'jansson')
+ depends=('bzip2' 'gcc-libs' 'zlib' 'xz' 'libass' 'lame' 'libxml2' 'opus'
+ 'libvorbis' 'libtheora' 'libsamplerate' 'speex' 'x264' 'jansson')
optdepends=('libdvdcss: for decoding encrypted DVDs')
cd "$srcdir/HandBrake-$pkgver/build"
diff --git a/abs/extra/java-common/PKGBUILD b/abs/extra/java-common/PKGBUILD
index 502622e..97f7585 100644
--- a/abs/extra/java-common/PKGBUILD
+++ b/abs/extra/java-common/PKGBUILD
@@ -1,26 +1,28 @@
# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
pkgname=('java-runtime-common' 'java-environment-common')
pkgbase=java-common
-pkgver=2
-pkgrel=2
+pkgver=3
+pkgrel=1
arch=('any')
-url='www.archlinux.org'
+url='https://www.archlinux.org/packages/extra/any/java-common/'
license=('GPL')
checkdepends=('wget')
+_shunitver=2.1.6
source=(profile_jre.csh
profile_jre.sh
bin_archlinux-java
test_archlinux-java
- https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz)
+ shunit2-${_shunitver}.tar.gz::https://github.com/kward/shunit2/archive/source.tar.gz)
sha256sums=('9d25638cafc2fabd1ba6f2f26aa01233eccf3d31db003d956b571f0ab655dd23'
'519e9881a2a9f4fc3d581ea0ef0da594eedbfdfcf734f9fdc0bb595e8ac77e4c'
- '272296ec7ca673b4f9f59fb70565328b6daef682c29cd964c988c018090c3fc2'
- 'c2c413a6b2f8b88ed170a5b19f7cb620518e09686f0d286b4b27d30f571e5050'
- '65a313a76fd5cc1c58c9e19fbc80fc0e418a4cbfbd46d54b35ed5b6e0025d4ee')
+ '5101f9d3d42cd545843a537826451c1b2e0bf2b16aba4e36ac797d9ace16dc63'
+ '721b225f6eb420f7b173ba2db8c65688f50ffd5dad0960ecce4cfefdb57b26a2'
+ '6beca93d20b72b46083c8271c4cf1da21b45f250a92b401c2565c65e1d75138f')
check() {
cd "${srcdir}"
+ ln -s shunit2-source/${_shunitver} shunit2
./test_archlinux-java
}
@@ -46,7 +48,7 @@ package_java-runtime-common() {
# Official list of binaries that Java headless runtime packages MUST provide
# This list is based on Arch Linux' default Java implementation: "OpenJDK 7 Icedtea"
for b in \
- java keytool orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200;
+ java keytool orbd pack200 rmid rmiregistry servertool tnameserv unpack200;
do
ln -s /usr/lib/jvm/default-runtime/bin/${b} "${pkgdir}/usr/bin/${b}"
done
@@ -61,9 +63,9 @@ package_java-environment-common() {
# Official list of supplementary binaries that Java environment packages MUST provide
# This list is based on Arch Linux' default Java implementation: "OpenJDK 7 Icedtea"
for b in \
- appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jcmd \
- jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat \
- jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc;
+ jar jarsigner javac javadoc javah javap jcmd \
+ jconsole jdb jinfo jmap jps jstack jstat \
+ jstatd rmic schemagen serialver wsgen wsimport xjc;
do
ln -s /usr/lib/jvm/default/bin/${b} "${pkgdir}/usr/bin/${b}"
done
diff --git a/abs/extra/java-common/bin_archlinux-java b/abs/extra/java-common/bin_archlinux-java
index 453b0a4..5c5937b 100755
--- a/abs/extra/java-common/bin_archlinux-java
+++ b/abs/extra/java-common/bin_archlinux-java
@@ -44,7 +44,7 @@ get_default_java() {
get_installed_javas() {
if [ -d ${JVM_DIR} ]; then
for dir in $(find ${JVM_DIR} -mindepth 1 -maxdepth 1 -type d | sort); do
- if [ -x ${dir}/bin/javac ]; then
+ if [ -x ${dir}/bin/java ]; then
javas+=(${dir/${JVM_DIR}\/})
else
if [ -x ${dir}/jre/bin/java ]; then
@@ -68,10 +68,10 @@ set_default_link_to() {
ln -sf ${new_default} ${DEFAULT_PATH}
unlink ${DEFAULT_PATH_JRE} 2>/dev/null
- if [[ ${new_default} == */jre ]]; then
- ln -sf ${new_default} ${DEFAULT_PATH_JRE}
- else
+ if [[ -d ${new_default}/jre ]]; then
ln -sf ${new_default}/jre ${DEFAULT_PATH_JRE}
+ else
+ ln -sf ${new_default} ${DEFAULT_PATH_JRE}
fi
}
@@ -90,6 +90,7 @@ do_status() {
default_java=$(get_default_java)
echo 'Available Java environments:'
for java in ${installed_java[@]}; do
+ # We discoverd this Java env but its JRE is actually set as default
if [ "${java}/jre" = "${default_java}" ]; then
echo -e " ${java} (${java}/jre default)"
elif [ ${java} = "${default_java}" ]; then
@@ -135,6 +136,7 @@ do_unset() {
do_fix() {
default=$(get_default_java)
if is_java_valid ${default}; then
+ # If its parent is also a valid Java environment
if is_java_valid $(dirname ${default}); then
unset_default_link
set_default_link_to $(dirname ${default})
@@ -142,9 +144,13 @@ do_fix() {
else
prev=$(readlink ${DEFAULT_PATH})
unset_default_link
- prev_fix=("${prev/\/jre}" "${prev}/jre")
- openjdk7=('java-7-openjdk' 'java-7-openjdk/jre')
- to_check=(${prev_fix[@]} ${openjdk7[@]} $(get_installed_javas))
+ potential_fixes=("${prev/\/jre}" "${prev}/jre")
+ openjdk8=('java-8-openjdk' 'java-8-openjdk/jre')
+ # List of environments to check by order of preference:
+ # - first potential fixes of user choices,
+ # - then OpenJDK8 as it is considered a default in Arch Linux
+ # - finally, any installed environment
+ to_check=(${potential_fixes[@]} ${openjdk8[@]} $(get_installed_javas))
for java in ${to_check[@]}; do
if ! is_java_valid $(get_default_java) && is_java_valid ${java}; then
set_default_link_to ${java}
diff --git a/abs/extra/java-common/test_archlinux-java b/abs/extra/java-common/test_archlinux-java
index 867745d..d6c4bce 100755
--- a/abs/extra/java-common/test_archlinux-java
+++ b/abs/extra/java-common/test_archlinux-java
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# To run this script, ensure shunit2 (https://code.google.com/p/shunit2/)
+# To run this script, ensure shunit2 (https://github.com/kward/shunit2)
# is available on the local directory, then just run sh bin_archlinux-java_tests
#
# inotifywait -r -m -e MODIFY . | while read l; do sh bin_archlinux-java_tests; done
@@ -37,22 +37,32 @@ tearDown() {
}
# $1: path of Java environment to create
-create_valid_jre_env() {
- mkdir -p ${JVM_DIR}/$1/bin
- for binary in java keytool orbd; do
- touch ${JVM_DIR}/$1/bin/${binary}
- chmod +x ${JVM_DIR}/$1/bin/${binary}
- done
+create_raw_java_env() {
+ java_env_name=$1
+ bin_name=$2
+ mkdir -p ${JVM_DIR}/${java_env_name}/bin
+ touch ${JVM_DIR}/${java_env_name}/bin/$bin_name
+ chmod +x ${JVM_DIR}/${java_env_name}/bin/$bin_name
+}
+
+create_valid_jre8_env() {
+ create_raw_java_env "$1/jre" "java"
}
# $1: path of Java environment to create
-create_valid_jdk_env() {
- create_valid_jre_env "$1"
- for binary in javac javah jhat; do
- touch ${JVM_DIR}/$1/bin/${binary}
- chmod +x ${JVM_DIR}/$1/bin/${binary}
- done
- create_valid_jre_env "$1/jre"
+create_valid_jre8_jdk8_env() {
+ create_raw_java_env "$1" "java"
+ create_raw_java_env "$1" "javac"
+ create_valid_jre8_env "$1"
+}
+
+create_valid_jre9_env() {
+ create_raw_java_env "$1" "java"
+}
+
+create_valid_jre9_jdk9_env() {
+ create_raw_java_env "$1" "java"
+ create_raw_java_env "$1" "javac"
}
set_default_for_test() {
@@ -79,24 +89,78 @@ assertDefaultSetTo() {
# do_status
-test_do_status() {
+test_do_status_with_jre8_default() {
JAVA_NAME_1="a$(get_rand_str)"
JAVA_NAME_2="b$(get_rand_str)"
- create_valid_jre_env "${JAVA_NAME_1}/jre"
+ JAVA_NAME_3="c$(get_rand_str)"
+ create_valid_jre8_env "${JAVA_NAME_1}"
set_default_for_test "${JAVA_NAME_1}/jre"
- create_valid_jdk_env "${JAVA_NAME_2}"
- expected=$(echo -e "Available Java environments:\n ${JAVA_NAME_1}/jre (default)\n ${JAVA_NAME_2}")
+ create_valid_jre8_jdk8_env "${JAVA_NAME_2}"
+ create_valid_jre9_env "${JAVA_NAME_3}"
+ mess="Available Java environments:"
+ mess+="\n ${JAVA_NAME_1}/jre (default)"
+ mess+="\n ${JAVA_NAME_2}"
+ mess+="\n ${JAVA_NAME_3}"
+ expected=$(echo -e "${mess}")
+ assertEquals 'Wrong status output' "${expected}" "$(do_status)"
+}
+
+test_do_status_with_jre9_default() {
+ JAVA_NAME_1="a$(get_rand_str)"
+ JAVA_NAME_2="b$(get_rand_str)"
+ JAVA_NAME_3="c$(get_rand_str)"
+ create_valid_jre8_env "${JAVA_NAME_1}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME_2}"
+ create_valid_jre9_env "${JAVA_NAME_3}"
+ set_default_for_test "${JAVA_NAME_3}"
+ mess="Available Java environments:"
+ mess+="\n ${JAVA_NAME_1}/jre"
+ mess+="\n ${JAVA_NAME_2}"
+ mess+="\n ${JAVA_NAME_3} (default)"
+ expected=$(echo -e "${mess}")
+ assertEquals 'Wrong status output' "${expected}" "$(do_status)"
+}
+
+test_do_status_with_jdk9_default() {
+ JAVA_NAME_1="a$(get_rand_str)"
+ JAVA_NAME_2="b$(get_rand_str)"
+ JAVA_NAME_3="c$(get_rand_str)"
+ create_valid_jre8_env "${JAVA_NAME_1}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME_2}"
+ create_valid_jre9_jdk9_env "${JAVA_NAME_3}"
+ set_default_for_test "${JAVA_NAME_3}"
+ mess="Available Java environments:"
+ mess+="\n ${JAVA_NAME_1}/jre"
+ mess+="\n ${JAVA_NAME_2}"
+ mess+="\n ${JAVA_NAME_3} (default)"
+ expected=$(echo -e "${mess}")
assertEquals 'Wrong status output' "${expected}" "$(do_status)"
}
test_do_status_no_default() {
JAVA_NAME_1="a$(get_rand_str)"
JAVA_NAME_2="b$(get_rand_str)"
- create_valid_jre_env "${JAVA_NAME_1}/jre"
- create_valid_jdk_env "${JAVA_NAME_2}"
+ JAVA_NAME_3="c$(get_rand_str)"
+ JAVA_NAME_4="d$(get_rand_str)"
+ create_valid_jre8_env "${JAVA_NAME_1}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME_2}"
+ create_valid_jre9_env "${JAVA_NAME_3}"
+ create_valid_jre9_jdk9_env "${JAVA_NAME_4}"
mess="Available Java environments:"
mess+="\n ${JAVA_NAME_1}/jre"
mess+="\n ${JAVA_NAME_2}"
+ mess+="\n ${JAVA_NAME_3}"
+ mess+="\n ${JAVA_NAME_4}"
+ mess+="\nNo Java environment set as default"
+ expected=$(echo -e "${mess}")
+ assertEquals 'Wrong status output' "${expected}" "$(do_status)"
+}
+
+test_do_status_no_duplicate_entry_jre9_jdk9() {
+ JAVA_NAME_1="a$(get_rand_str)"
+ create_valid_jre9_jdk9_env "${JAVA_NAME_1}"
+ mess="Available Java environments:"
+ mess+="\n ${JAVA_NAME_1}"
mess+="\nNo Java environment set as default"
expected=$(echo -e "${mess}")
assertEquals 'Wrong status output' "${expected}" "$(do_status)"
@@ -107,7 +171,7 @@ test_do_status_no_javas() {
}
test_do_status_jre_but_jdk_exists() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}/jre"
mess="Available Java environments:"
mess+="\n ${JAVA_NAME} (${JAVA_NAME}/jre default)"
@@ -117,27 +181,35 @@ test_do_status_jre_but_jdk_exists() {
# do_get
-test_do_get_with_default() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_get_with_jdk8_default() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}"
assertEquals 'Wrong result' "${JAVA_NAME}" "$(do_get)"
assertDefaultSetTo "${JAVA_NAME}"
}
test_do_get_without_default() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "$(get_rand_str)"
+ create_valid_jre9_jdk9_env "$(get_rand_str)"
assertNull 'Wrong result' "$(do_get)"
}
-test_do_get_without_default() {
+test_do_get_with_initial_null() {
set_default_for_test "/dev/null"
assertNull 'Wrong result' "$(do_get)"
}
+test_do_get_with_jdk9_default() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ assertEquals 'Wrong result' "${JAVA_NAME}" "$(do_get)"
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
# do_set
test_do_set_new_invalid() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}"
output=$(do_set "INVALID")
assertEquals 'Wrong status returned' 1 $?
@@ -146,32 +218,66 @@ test_do_set_new_invalid() {
}
test_do_set_current_invalid() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "INVALID"
$(do_set "${JAVA_NAME}")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME}"
}
-test_do_set_with_default_already_set() {
- create_valid_jre_env "${JAVA_NAME}/jre"
+test_do_set_jre8_with_default_already_set_to_jre8() {
+ create_valid_jre8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}/jre"
JAVA_NAME_2="$(get_rand_str)"
- create_valid_jre_env "${JAVA_NAME_2}/jre"
+ create_valid_jre8_env "${JAVA_NAME_2}"
$(do_set "${JAVA_NAME_2}/jre")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME_2}/jre"
}
-test_do_set_no_default() {
- create_valid_jre_env "${JAVA_NAME}/jre"
+test_do_set_jre9_with_default_already_set_to_jre8() {
+ create_valid_jre8_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}/jre"
+ JAVA_NAME_2="$(get_rand_str)"
+ create_valid_jre9_env "${JAVA_NAME_2}"
+ $(do_set "${JAVA_NAME_2}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA_NAME_2}"
+}
+
+test_do_set_jdk9_with_default_already_set_to_jdk8() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ JAVA_NAME_2="$(get_rand_str)"
+ create_valid_jre9_jdk9_env "${JAVA_NAME_2}"
+ $(do_set "${JAVA_NAME_2}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA_NAME_2}"
+}
+
+test_do_set_jre8_no_previous_default() {
+ create_valid_jre8_env "${JAVA_NAME}"
$(do_set "${JAVA_NAME}/jre")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME}/jre"
}
-test_do_set_exists_jdk() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_set_jre9_no_previous_default() {
+ create_valid_jre9_env "${JAVA_NAME}"
+ $(do_set "${JAVA_NAME}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
+test_do_set_jdk9_no_previous_default() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ $(do_set "${JAVA_NAME}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
+test_do_set_jre8_while_jdk8_also_exists() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
output=$(do_set "${JAVA_NAME}/jre")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME}/jre"
@@ -181,33 +287,52 @@ test_do_set_exists_jdk() {
#assertEquals 'Wrong message' "${expected}" "${output}"
}
-test_do_set_cleanup_old_java_default() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_set_jdk8_cleanup_old_jre8_default() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}"
output=$(do_set "${JAVA_NAME}/jre")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME}/jre"
}
-test_do_set_devnull() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_set_jdk9_cleanup_old_jdk8_default() {
+ JAVA8_NAME=$(get_rand_str)
+ create_valid_jre8_jdk8_env "${JAVA8_NAME}"
+ set_default_for_test "${JAVA8_NAME}"
+ JAVA9_NAME=$(get_rand_str)
+ create_valid_jre9_jdk9_env "${JAVA9_NAME}"
+ output=$(do_set "${JAVA9_NAME}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA9_NAME}"
+}
+
+test_do_set_jdk8_devnull() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "/dev/null"
output=$(do_set "${JAVA_NAME}/jre")
assertEquals 'Wrong status returned' 0 $?
assertDefaultSetTo "${JAVA_NAME}/jre"
}
+test_do_set_jdk9_devnull() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ set_default_for_test "/dev/null"
+ output=$(do_set "${JAVA_NAME}")
+ assertEquals 'Wrong status returned' 0 $?
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
# do_unset
-test_do_unset_default_not_target() {
- create_valid_jre_env "${JAVA_NAME}/jre"
+test_do_unset_jre8() {
+ create_valid_jre8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}/jre"
do_unset
assertDefaultNotSet
}
test_do_unset_no_default_link() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}"
unlink ${DEFAULT_PATH}
do_unset
@@ -220,37 +345,90 @@ test_do_unset_devnull() {
assertDefaultNotSet
}
+test_do_unset_jre9() {
+ create_valid_jre9_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ do_unset
+ assertDefaultNotSet
+}
+
+test_do_unset_jdk9() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ do_unset
+ assertDefaultNotSet
+}
+
# do_fix
-test_do_fix_default_valid() {
- create_valid_jre_env "${JAVA_NAME}/jre"
+test_do_fix_default_valid_jre8() {
+ create_valid_jre8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}/jre"
do_fix
assertDefaultSetTo "${JAVA_NAME}/jre"
}
-test_do_fix_no_default() {
- create_valid_jre_env "${JAVA_NAME}/jre"
+test_do_fix_default_valid_jre9() {
+ create_valid_jre9_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ do_fix
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
+test_do_fix_default_valid_jdk9() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ set_default_for_test "${JAVA_NAME}"
+ do_fix
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
+test_do_fix_no_default_jre8() {
+ create_valid_jre8_env "${JAVA_NAME}"
do_fix
assertDefaultSetTo "${JAVA_NAME}/jre"
}
+test_do_fix_no_default_jre9() {
+ create_valid_jre9_env "${JAVA_NAME}"
+ do_fix
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
+test_do_fix_no_default_jdk9() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ do_fix
+ assertDefaultSetTo "${JAVA_NAME}"
+}
+
test_do_fix_default_invalid_openjdk7_jdk_installed() {
- create_valid_jdk_env "java-7-openjdk"
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "java-8-openjdk"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
+ do_fix
+ assertDefaultSetTo "java-8-openjdk"
+}
+
+test_do_fix_jdk8_not_default_but_openjdk7_jre_installed() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
+ create_valid_jre8_env "java-8-openjdk"
+ do_fix
+ assertDefaultSetTo "java-8-openjdk/jre"
+}
+
+test_do_fix_jdk9_not_default_but_openjdk7_jre_installed() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
+ create_valid_jre8_env "java-8-openjdk"
do_fix
- assertDefaultSetTo "java-7-openjdk"
+ assertDefaultSetTo "java-8-openjdk/jre"
}
-test_do_fix_default_invalid_openjdk7_jre_installed() {
- create_valid_jdk_env "${JAVA_NAME}"
- create_valid_jre_env "java-7-openjdk/jre"
+test_do_fix_default_invalid_random_java8_installed() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
do_fix
- assertDefaultSetTo "java-7-openjdk/jre"
+ assertDefaultSetTo "${JAVA_NAME}"
}
-test_do_fix_default_invalid_random_java_installed() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_fix_default_invalid_random_java9_installed() {
+ create_valid_jre9_jdk9_env "${JAVA_NAME}"
do_fix
assertDefaultSetTo "${JAVA_NAME}"
}
@@ -260,27 +438,28 @@ test_do_fix_default_invalid_no_java_installed() {
assertDefaultNotSet
}
-test_do_fix_jre_but_jdk_exists() {
- create_valid_jdk_env "${JAVA_NAME}"
+test_do_fix_jre8_but_jdk8_exists() {
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "${JAVA_NAME}/jre"
do_fix
assertDefaultSetTo "${JAVA_NAME}"
}
test_do_fix_jdk_but_jre_exists() {
- create_valid_jdk_env "java-7-openjdk"
- create_valid_jre_env "${JAVA_NAME}/jre"
+ create_valid_jre8_jdk8_env "java-7-openjdk"
+ create_valid_jre8_env "${JAVA_NAME}"
+ # Only JRE is installed but setting JDK as default
set_default_for_test "${JAVA_NAME}"
do_fix
assertDefaultSetTo "${JAVA_NAME}/jre"
}
test_do_fix_devnull() {
- create_valid_jdk_env "${JAVA_NAME}"
+ create_valid_jre8_jdk8_env "${JAVA_NAME}"
set_default_for_test "/dev/null"
do_fix
assertDefaultSetTo "${JAVA_NAME}"
}
# load shunit2
-. shunit2-2.1.6/src/shunit2
+. shunit2/src/shunit2
diff --git a/abs/extra/java-hamcrest/LICENSE.txt b/abs/extra/java-hamcrest/LICENSE.txt
new file mode 100644
index 0000000..5ebe92c
--- /dev/null
+++ b/abs/extra/java-hamcrest/LICENSE.txt
@@ -0,0 +1,27 @@
+BSD License
+
+Copyright (c) 2000-2006, www.hamcrest.org
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of Hamcrest nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/abs/extra/java-hamcrest/PKGBUILD b/abs/extra/java-hamcrest/PKGBUILD
new file mode 100644
index 0000000..f707fb0
--- /dev/null
+++ b/abs/extra/java-hamcrest/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
+_libname=hamcrest
+pkgname=java-${_libname}
+pkgver=1.3
+pkgrel=4
+pkgdesc='Java matcher objects library'
+arch=('any')
+url='https://code.google.com/p/hamcrest'
+license=('BSD')
+depends=('java-runtime-headless')
+_url='https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/hamcrest'
+source=(${_url}/${_libname}-core-${pkgver}.jar
+ ${_url}/${_libname}-library-${pkgver}.jar
+ ${_url}/${_libname}-generator-${pkgver}.jar
+ ${_url}/${_libname}-integration-${pkgver}.jar
+ LICENSE.txt)
+noextract=(${_libname}-core-${pkgver}.jar
+ ${_libname}-library-${pkgver}.jar
+ ${_libname}-generator-${pkgver}.jar
+ ${_libname}-integration-${pkgver}.jar)
+sha256sums=('66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9'
+ '711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c'
+ '84c810cafabd046d0e5599f9b5fc1514b2a6ce45313997e020a47076ba27d035'
+ '70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2'
+ '1cde867cab5c8e842929da5391cef98b4017314822270e934e8e2eef3767c666')
+
+package() {
+ cd "${srcdir}"
+
+ install -dm755 ${pkgdir}/usr/share/java/${_libname}
+ for j in core library generator integration; do
+ cp ${_libname}-${j}-${pkgver}.jar ${pkgdir}/usr/share/java/${_libname}/${j}-${pkgver}.jar
+ ln -s ${j}-${pkgver}.jar ${pkgdir}/usr/share/java/${_libname}/${j}.jar
+ ln -s ${_libname}/${j}-${pkgver}.jar ${pkgdir}/usr/share/java/${_libname}-${j}.jar
+ done
+
+ install -Dm644 LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/abs/extra/java8-openjdk/PKGBUILD b/abs/extra/java8-openjdk/PKGBUILD
new file mode 100644
index 0000000..cec67b6
--- /dev/null
+++ b/abs/extra/java8-openjdk/PKGBUILD
@@ -0,0 +1,280 @@
+# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
+# Contributor: Boyan Ding <stu_dby@126.com>
+
+# TODO
+# once icedtea:
+# pulse
+# add policytool desktop files
+
+# Package 'openjfx' must be updated when this one is
+pkgname=('jre8-openjdk-headless' 'jre8-openjdk' 'jdk8-openjdk' 'openjdk8-src' 'openjdk8-doc')
+pkgbase=java8-openjdk
+_java_ver=8
+_jdk_update=202
+_jdk_build=26
+pkgver=${_java_ver}.u${_jdk_update}
+_repo_ver=jdk${_java_ver}u${_jdk_update}-b${_jdk_build}
+pkgrel=1
+arch=('x86_64')
+url='http://openjdk.java.net/'
+license=('custom')
+makedepends=('jdk7-openjdk' 'ccache' 'cpio' 'unzip' 'zip'
+ 'libxrender' 'libxtst' 'fontconfig' 'libcups' 'alsa-lib')
+_url_src=http://hg.openjdk.java.net/jdk8u/jdk8u
+source=(jdk8u-${_repo_ver}.tar.gz::${_url_src}/archive/${_repo_ver}.tar.gz
+ corba-${_repo_ver}.tar.gz::${_url_src}/corba/archive/${_repo_ver}.tar.gz
+ hotspot-${_repo_ver}.tar.gz::${_url_src}/hotspot/archive/${_repo_ver}.tar.gz
+ jdk-${_repo_ver}.tar.gz::${_url_src}/jdk/archive/${_repo_ver}.tar.gz
+ jaxws-${_repo_ver}.tar.gz::${_url_src}/jaxws/archive/${_repo_ver}.tar.gz
+ jaxp-${_repo_ver}.tar.gz::${_url_src}/jaxp/archive/${_repo_ver}.tar.gz
+ langtools-${_repo_ver}.tar.gz::${_url_src}/langtools/archive/${_repo_ver}.tar.gz
+ nashorn-${_repo_ver}.tar.gz::${_url_src}/nashorn/archive/${_repo_ver}.tar.gz)
+
+sha256sums=('6c5b04dd4e5d73c6bc4c616d7be32b61cd3e8402dd7a259b26a44c8052f0a7a2'
+ '973e46b43ea16d76aa6d60db7d125ab456ae9808dcc7138005a7cfbac9e2c456'
+ 'ccc5fb49e46340b5068c6094810c3db29ac27a9f848314cfd29930e05a0924a7'
+ '584786a2ced9de3a1d3285e115efb252309348f1d2dcf63799a597c14891f7bb'
+ '1b3c71458e86235c39862248d9b56732293ee208395167eba32ba1d075b0d7f4'
+ 'cf6e5e825b0b7977733894e757ee41d7837fa63240be10556a7d2767ff98a742'
+ 'da08f0dccf4b88ea7dd651bdfe19bcd5ce737671a6a68d74c5af351715518e17'
+ 'e9331149c2d269e86ff1901d526c90c32a21cecfc3b13289d6c93b8e5508debf')
+
+case "${CARCH}" in
+ 'x86_64') _JARCH=amd64 ; _DOC_ARCH=x86_64 ;;
+ 'i686' ) _JARCH=i386 ; _DOC_ARCH=x86 ;;
+esac
+
+_jdkname=openjdk8
+_jvmdir=/usr/lib/jvm/java-8-openjdk
+_prefix="jdk8u-${_repo_ver}/image"
+_imgdir="${_prefix}/jvm/openjdk-1.8.0_$(printf '%.2d' ${_jdk_update})"
+_nonheadless=(bin/policytool
+ lib/${_JARCH}/libjsound.so
+ lib/${_JARCH}/libjsoundalsa.so
+ lib/${_JARCH}/libsplashscreen.so)
+
+prepare() {
+ cd jdk8u-${_repo_ver}
+ for subrepo in corba hotspot jdk jaxws jaxp langtools nashorn; do
+ ln -s ../${subrepo}-${_repo_ver} ${subrepo}
+ done
+}
+
+build() {
+ cd jdk8u-${_repo_ver}
+
+ unset JAVA_HOME
+ # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1346
+ export MAKEFLAGS=${MAKEFLAGS/-j*}
+
+ # We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
+ export CFLAGS="${CFLAGS//-O2/-O3} ${CPPFLAGS} -Wno-error=deprecated-declarations -Wno-error=stringop-overflow= -Wno-error=return-type -Wno-error=cpp -fno-lifetime-dse -fno-delete-null-pointer-checks"
+ export CXXFLAGS="${CXXFLAGS} ${CPPFLAGS}"
+
+ install -d -m 755 "${srcdir}/${_prefix}/"
+ sh configure \
+ --prefix="${srcdir}/${_prefix}" \
+ --with-update-version="${_jdk_update}" \
+ --with-build-number="b${_jdk_build}" \
+ --with-milestone="fcs" \
+ --enable-unlimited-crypto \
+ --with-zlib=system \
+ --with-extra-cflags="${CFLAGS}" \
+ --with-extra-cxxflags="${CXXFLAGS}" \
+ --with-extra-ldflags="${LDFLAGS}"
+
+ # TODO OpenJDK does not want last version of giflib (add 'giflib' as dependency once fixed)
+ #--with-giflib=system \
+
+ # These help to debug builds: LOG=trace HOTSPOT_BUILD_JOBS=1
+ # Without 'DEBUG_BINARIES', i686 won't build: http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019203.html
+ make
+ make docs
+
+ # FIXME sadly 'DESTDIR' is not used here!
+ make install
+
+ cd ../${_imgdir}
+
+ # A lot of build stuff were directly taken from
+ # http://pkgs.fedoraproject.org/cgit/java-1.8.0-openjdk.git/tree/java-1.8.0-openjdk.spec
+
+ # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
+ find . -iname '*.jar' -exec chmod ugo+r {} \;
+ chmod ugo+r lib/ct.sym
+
+ # remove redundant *diz and *debuginfo files
+ find . -iname '*.diz' -exec rm {} \;
+ find . -iname '*.debuginfo' -exec rm {} \;
+}
+
+check() {
+ cd jdk8u-${_repo_ver}
+ make -k test
+}
+
+package_jre8-openjdk-headless() {
+ pkgdesc='OpenJDK Java 8 headless runtime environment'
+ depends=('java-runtime-common' 'ca-certificates-utils' 'nss')
+ optdepends=('java-rhino: for some JavaScript support')
+ provides=('java-runtime-headless=8' 'java-runtime-headless-openjdk=8')
+ # Upstream config files that should go to etc and get backup
+ _backup_etc=(etc/java-8-openjdk/${_JARCH}/jvm.cfg
+ etc/java-8-openjdk/calendars.properties
+ etc/java-8-openjdk/content-types.properties
+ etc/java-8-openjdk/flavormap.properties
+ etc/java-8-openjdk/images/cursors/cursors.properties
+ etc/java-8-openjdk/logging.properties
+ etc/java-8-openjdk/management/jmxremote.access
+ etc/java-8-openjdk/management/jmxremote.password
+ etc/java-8-openjdk/management/management.properties
+ etc/java-8-openjdk/management/snmp.acl
+ etc/java-8-openjdk/net.properties
+ etc/java-8-openjdk/psfont.properties.ja
+ etc/java-8-openjdk/psfontj2d.properties
+ etc/java-8-openjdk/security/java.policy
+ etc/java-8-openjdk/security/java.security
+ etc/java-8-openjdk/sound.properties)
+ replaces=('jre8-openjdk-headless-wm')
+ backup=(${_backup_etc[@]})
+ install=install_jre8-openjdk-headless.sh
+
+ cd ${_imgdir}/jre
+
+ install -d -m 755 "${pkgdir}${_jvmdir}/jre/"
+ cp -a bin lib "${pkgdir}${_jvmdir}/jre"
+
+ # Set config files
+ mv "${pkgdir}${_jvmdir}"/jre/lib/management/jmxremote.password{.template,}
+ mv "${pkgdir}${_jvmdir}"/jre/lib/management/snmp.acl{.template,}
+
+ # Remove 'non-headless' lib files
+ for f in ${_nonheadless[@]}; do
+ rm "${pkgdir}${_jvmdir}/jre/${f}"
+ done
+
+ # Man pages
+ pushd "${pkgdir}${_jvmdir}/jre/bin"
+ install -d -m 755 "${pkgdir}"/usr/share/man/{,ja/}man1/
+ for file in *; do
+ install -m 644 "${srcdir}/${_imgdir}/man/man1/${file}.1" \
+ "${pkgdir}/usr/share/man/man1/${file}-${_jdkname}.1"
+ install -m 644 "${srcdir}/${_imgdir}/man/ja/man1/${file}.1" \
+ "${pkgdir}/usr/share/man/ja/man1/${file}-${_jdkname}.1"
+ done
+ popd
+
+ # Link JKS keystore from ca-certificates-utils
+ rm -f "${pkgdir}${_jvmdir}/jre/lib/security/cacerts"
+ ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}${_jvmdir}/jre/lib/security/cacerts"
+
+ # Install license
+ install -d -m 755 "${pkgdir}/usr/share/licenses/${pkgbase}/"
+ install -m 644 ASSEMBLY_EXCEPTION LICENSE THIRD_PARTY_README \
+ "${pkgdir}/usr/share/licenses/${pkgbase}"
+ ln -sf /usr/share/licenses/${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+
+ # Move config files that were set in _backup_etc from ./lib to /etc
+ for file in ${_backup_etc[@]}; do
+ _filepkgpath=${_jvmdir}/jre/lib/${file#etc/java-8-openjdk/}
+ install -D -m 644 "${pkgdir}${_filepkgpath}" "${pkgdir}/${file}"
+ ln -sf /${file} "${pkgdir}${_filepkgpath}"
+ done
+}
+
+package_jre8-openjdk() {
+ pkgdesc='OpenJDK Java 8 full runtime environment'
+ depends=("jre8-openjdk-headless=${pkgver}-${pkgrel}" 'xdg-utils' 'hicolor-icon-theme')
+ optdepends=('icedtea-web: web browser plugin + Java Web Start'
+ 'alsa-lib: for basic sound support'
+ 'gtk2: for the Gtk+ look and feel - desktop usage'
+ 'java-openjfx: for JavaFX GUI components support')
+ # TODO when adding IcedTea: 'giflib: for gif format support'
+ # TODO when adding IcedTea: 'libpulse: for advanced sound support'
+ provides=('java-runtime=8' 'java-runtime-openjdk=8')
+ install=install_jre8-openjdk.sh
+ replaces=('jre8-openjdk-wm')
+
+ cd ${_imgdir}/jre
+
+ for f in ${_nonheadless[@]}; do
+ install -D ${f} "${pkgdir}${_jvmdir}/jre/${f}"
+ done
+
+ # Man pages
+ pushd "${pkgdir}${_jvmdir}/jre/bin"
+ install -d -m 755 "${pkgdir}"/usr/share/man/{,ja/}man1/
+ for file in *; do
+ install -m 644 "${srcdir}/${_imgdir}/man/man1/${file}.1" \
+ "${pkgdir}/usr/share/man/man1/${file}-${_jdkname}.1"
+ install -m 644 "${srcdir}/${_imgdir}/man/ja/man1/${file}.1" \
+ "${pkgdir}/usr/share/man/ja/man1/${file}-${_jdkname}.1"
+ done
+ popd
+
+ # Desktop files
+ # TODO add these when switching to IcedTea
+ #install -D -m 644 "${srcdir}/icedtea-${_icedtea_ver}/policytool.desktop" \
+ # "${pkgdir}/usr/share/applications/policytool.desktop"
+
+ # Install license
+ install -d -m 755 "${pkgdir}/usr/share/licenses/${pkgbase}/"
+ ln -sf /usr/share/licenses/${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_jdk8-openjdk() {
+ pkgdesc='OpenJDK Java 8 development kit'
+ depends=('java-environment-common' "jre8-openjdk=${pkgver}-${pkgrel}")
+ provides=('java-environment=8' 'java-environment-openjdk=8')
+ replaces=('jdk8-openjdk-wm')
+ install=install_jdk8-openjdk.sh
+
+ cd ${_imgdir}
+
+ # Main files
+ install -d -m 755 "${pkgdir}${_jvmdir}"
+
+ cp -a include lib "${pkgdir}${_jvmdir}"
+
+ # 'bin' files
+ pushd bin
+
+ # 'java-rmi.cgi' will be handled separately as it should not be in the PATH and has no man page
+ for b in $(ls | grep -v java-rmi.cgi); do
+ if [ -e ../jre/bin/${b} ]; then
+ # Provide a link of the jre binary in the jdk/bin/ directory
+ ln -s ../jre/bin/${b} "${pkgdir}${_jvmdir}/bin/${b}"
+ else
+ # Copy binary to jdk/bin/
+ install -D -m 755 ${b} "${pkgdir}${_jvmdir}/bin/${b}"
+ # Copy man page
+ install -D -m 644 ../man/man1/${b}.1 "${pkgdir}/usr/share/man/man1/${b}-${_jdkname}.1"
+ install -D -m 644 ../man/ja/man1/${b}.1 "${pkgdir}/usr/share/man/ja/man1/${b}-${_jdkname}.1"
+ fi
+ done
+ popd
+
+ # Handling 'java-rmi.cgi' separately
+ install -D -m 755 bin/java-rmi.cgi "${pkgdir}${_jvmdir}/bin/java-rmi.cgi"
+
+ # link license
+ install -d -m 755 "${pkgdir}/usr/share/licenses/"
+ ln -sf /usr/share/licenses/${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_openjdk8-src() {
+ pkgdesc='OpenJDK Java 8 sources'
+
+ install -D "${srcdir}/${_imgdir}/src.zip" "${pkgdir}${_jvmdir}/src.zip"
+}
+
+package_openjdk8-doc() {
+ pkgdesc='OpenJDK Java 8 documentation'
+
+ install -d -m 755 "${pkgdir}/usr/share/doc/${pkgbase}/"
+ cp -r "${srcdir}"/jdk8u-${_repo_ver}/build/linux-${_DOC_ARCH}-normal-server-release/docs/* \
+ "${pkgdir}/usr/share/doc/${pkgbase}/"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/java8-openjdk/install_jdk8-openjdk.sh b/abs/extra/java8-openjdk/install_jdk8-openjdk.sh
new file mode 100644
index 0000000..faac872
--- /dev/null
+++ b/abs/extra/java8-openjdk/install_jdk8-openjdk.sh
@@ -0,0 +1,50 @@
+THIS_JDK='java-8-openjdk'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "" | ${THIS_JDK}/jre)
+ /usr/bin/archlinux-java set ${THIS_JDK}
+ ;;
+ ${THIS_JDK})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+post_upgrade() {
+ default=$(fix_default)
+ if [ -z "${default}" -o "x${default}" = "x${THIS_JDK}/jre" ]; then
+ /usr/bin/archlinux-java set ${THIS_JDK}
+ fi
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+pre_remove() {
+ if [ "x$(fix_default)" = "x${THIS_JDK}" ]; then
+ /usr/bin/archlinux-java unset
+ if [ -x /usr/lib/jvm/${THIS_JDK}/jre/bin/java ]; then
+ /usr/bin/archlinux-java set ${THIS_JDK}/jre
+ fi
+ fi
+}
diff --git a/abs/extra/java8-openjdk/install_jre8-openjdk-headless.sh b/abs/extra/java8-openjdk/install_jre8-openjdk-headless.sh
new file mode 100644
index 0000000..5d7a0de
--- /dev/null
+++ b/abs/extra/java8-openjdk/install_jre8-openjdk-headless.sh
@@ -0,0 +1,48 @@
+THIS_JRE='java-8-openjdk/jre'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "")
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ ;;
+ ${THIS_JRE} | ${THIS_JRE/\/jre})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+post_upgrade() {
+ if [ -z $(fix_default) ]; then
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ fi
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+pre_remove() {
+ default=$(fix_default)
+ if [ "x${default/\/jre}" = "x${THIS_JRE/\/jre}" ]; then
+ /usr/bin/archlinux-java unset
+ echo "No Java environment is set as default anymore"
+ fi
+}
diff --git a/abs/extra/java8-openjdk/install_jre8-openjdk.sh b/abs/extra/java8-openjdk/install_jre8-openjdk.sh
new file mode 100644
index 0000000..aef5858
--- /dev/null
+++ b/abs/extra/java8-openjdk/install_jre8-openjdk.sh
@@ -0,0 +1,42 @@
+THIS_JRE='java-8-openjdk/jre'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "")
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ ;;
+ ${THIS_JRE} | ${THIS_JRE/\/jre})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ echo "when you use a non-reparenting window manager,"
+ echo "set _JAVA_AWT_WM_NONREPARENTING=1 in /etc/profile.d/jre.sh"
+}
+
+post_upgrade() {
+ if [ -z "$(fix_default)" ]; then
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ fi
+}
+
+pre_remove() {
+ if [ "x$(fix_default)" = "x${THIS_JRE/\/jre}" ]; then
+ /usr/bin/archlinux-java unset
+ echo "No Java environment is set as default anymore"
+ fi
+}
diff --git a/abs/extra/json-glib/PKGBUILD b/abs/extra/json-glib/PKGBUILD
index 9ad0257..cf67fe9 100644
--- a/abs/extra/json-glib/PKGBUILD
+++ b/abs/extra/json-glib/PKGBUILD
@@ -1,30 +1,38 @@
-# $Id$
-# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
pkgname=json-glib
-pkgver=1.0.2
+pkgver=1.4.4
pkgrel=1
pkgdesc="JSON library built on GLib"
-arch=('i686' 'x86_64')
-url="http://live.gnome.org/JsonGlib"
-license=('GPL')
-depends=('glib2')
-makedepends=('gobject-introspection')
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver:0:3}/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('887bd192da8f5edc53b490ec51bf3ffebd958a671f5963e4f3af32c22e35660a')
+url="https://wiki.gnome.org/Projects/JsonGlib"
+arch=(x86_64)
+license=(GPL)
+depends=(glib2)
+makedepends=(gobject-introspection git gtk-doc meson)
+_commit=700a8bc414991d35ff3f79607547d4beedac8629 # tags/1.4.4^0
+source=("git+https://gitlab.gnome.org/GNOME/json-glib.git#commit=$_commit")
+sha256sums=('SKIP')
-build(){
- cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr
- make
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
}
-package(){
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
+prepare() {
+ cd $pkgname
}
-check(){
- cd "${srcdir}/${pkgname}-${pkgver}"
- make check
+build() {
+ arch-meson $pkgname build -D docs=true -D man=true
+ ninja -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+ rm -r "$pkgdir"/usr/{lib,share}/installed-tests
}
diff --git a/abs/extra/junit/PKGBUILD b/abs/extra/junit/PKGBUILD
new file mode 100644
index 0000000..1c846da
--- /dev/null
+++ b/abs/extra/junit/PKGBUILD
@@ -0,0 +1,16 @@
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
+pkgname=junit
+pkgver=4.12
+pkgrel=2
+pkgdesc='Simple JVM framework to write repeatable tests'
+arch=('any')
+url='http://junit.org/'
+license=('EPL')
+depends=('java-environment' 'java-hamcrest')
+source=(http://search.maven.org/remotecontent?filepath=${pkgname}/${pkgname}/${pkgver}/${pkgname}-${pkgver}.jar)
+sha512sums=('5974670c3d178a12da5929ba5dd9b4f5ff461bdc1b92618c2c36d53e88650df7adbf3c1684017bb082b477cb8f40f15dcf7526f06f06183f93118ba9ebeaccce')
+
+package() {
+ install -D -m 644 ${srcdir}/${pkgname}-${pkgver}.jar ${pkgdir}/usr/share/java/${pkgname}-${pkgver}.jar
+ ln -s ${pkgname}-${pkgver}.jar ${pkgdir}/usr/share/java/${pkgname}.jar
+}
diff --git a/abs/extra/kodi-addon-inputstream-adaptive/PKGBUILD b/abs/extra/kodi-addon-inputstream-adaptive/PKGBUILD
new file mode 100644
index 0000000..ae29c1c
--- /dev/null
+++ b/abs/extra/kodi-addon-inputstream-adaptive/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer: Cedric Girard <girard.cedric@gmail.com>
+# Contributor: kevku <kevku@gmx.com>
+pkgname=kodi-addon-inputstream-adaptive
+pkgver=2.3.15
+pkgrel=1
+pkgdesc="InputStream client for adaptive streams for Kodi 17+"
+arch=('x86_64' 'i686')
+url="https://github.com/peak3d/inputstream.adaptive"
+license=('GPL2')
+makedepends=('kodi' 'cmake')
+depends=('kodi')
+conflicts=("${pkgname%-git}")
+source=("https://github.com/peak3d/inputstream.adaptive/archive/${pkgver}.tar.gz")
+
+
+build() {
+ cd "$srcdir/inputstream.adaptive-${pkgver}"
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/inputstream.adaptive-${pkgver}"
+ make DESTDIR="$pkgdir/" install
+}
+md5sums=('cf98a561ee33d329522340fffb29b68e')
diff --git a/abs/extra/kodi-addon-pvr-mythtv-git/PKGBUILD b/abs/extra/kodi-addon-pvr-mythtv-git/PKGBUILD
deleted file mode 100644
index cee5f2d..0000000
--- a/abs/extra/kodi-addon-pvr-mythtv-git/PKGBUILD
+++ /dev/null
@@ -1,64 +0,0 @@
-# Maintainer: Westin Miller <equinox.aur@gmail.com>
-# Contributor: Michael Lass <bevan@bi-co.net>
-
-pkgname=kodi-addon-pvr-mythtv-git
-pkgver=r543.fd91be1
-pkgrel=1
-API=16
-if [ -z "$API" ]; then
- error "No API Version Defined, defaulting to 16. 15 = Isengard, 16 = Jarvis, 99 = git master"
-fi
-API=${API:-16}
-
-_branch=$(
- case "${API}" in
- 15) echo "Isengard";;
- 16) echo "Jarvis";;
- 99) echo "master";;
- *) error "Unknown API version.";;
- esac
-)
-pkgdesc='MythTV PVR client addon for Kodi'
-arch=('armv7h' 'i686' 'x86_64')
-url="https://github.com/kodi-pvr/pvr.hts"
-license=('GPL')
-makedepends=('cmake' 'git' 'kodi-platform')
-if [ "$API" -eq "99" ]; then
- depends=("kodi-git")
-else
- depends=("kodi>=$API.0" "kodi<$[$API+1].0")
-fi
-provides=('kodi-addon-pvr-mythtv')
-conflicts=('kodi-addon-pvr-mythtv' 'kodi-pvr-addons')
-source=("${pkgname}::git+https://github.com/kodi-pvr/pvr.mythtv.git#branch=${_branch}"
- 'p8-platform.patch')
-
-pkgver() {
- cd "$pkgname"
- printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
-}
-
-build() {
- cd kodi-addon-pvr-mythtv-git/
- patch -p1 -i ${srcdir}/p8-platform.patch
- cd ..
-
- echo "API Version $API"
- echo "Branch version $_branch"
- mkdir -p "$pkgname/build"
- cd "$pkgname/build"
-
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=/usr/lib/kodi \
- -DCMAKE_BUILD_TYPE=Release \
- ..
- make
-}
-
-package() {
- cd "$pkgname/build"
- make DESTDIR="$pkgdir" install
-}
-md5sums=('SKIP'
- 'a3cf865a74564f1c07b16c20265174d2')
diff --git a/abs/extra/kodi-addon-pvr-mythtv-git/__changelog b/abs/extra/kodi-addon-pvr-mythtv-git/__changelog
deleted file mode 100644
index 2094284..0000000
--- a/abs/extra/kodi-addon-pvr-mythtv-git/__changelog
+++ /dev/null
@@ -1,4 +0,0 @@
-PKGBUILD:
- - Add p8-platform.patch
- - force API=16
- - change dep kodi-platform-git to kodi-platform
diff --git a/abs/extra/kodi-addon-pvr-mythtv-git/p8-platform.patch b/abs/extra/kodi-addon-pvr-mythtv-git/p8-platform.patch
deleted file mode 100644
index 87fb73f..0000000
--- a/abs/extra/kodi-addon-pvr-mythtv-git/p8-platform.patch
+++ /dev/null
@@ -1,509 +0,0 @@
-From 5aaf171deb1e31c7e3df173d109eb114499e5f45 Mon Sep 17 00:00:00 2001
-From: "h.udo" <hudokkow@gmail.com>
-Date: Wed, 6 Jan 2016 15:08:54 +0000
-Subject: [PATCH 1/2] [src] Update to p8-platform
-
----
- src/categories.cpp | 2 +-
- src/cppmyth/MythScheduleHelper75.cpp | 2 +-
- src/cppmyth/MythScheduleHelperNoHelper.cpp | 10 +++++-----
- src/cppmyth/MythScheduleHelperNoHelper.h | 2 +-
- src/cppmyth/MythScheduleManager.cpp | 2 +-
- src/cppmyth/MythScheduleManager.h | 4 ++--
- src/demux.cpp | 4 ++--
- src/demux.h | 12 ++++++------
- src/demuxer/tsDemuxer.cpp | 26 +++++++++++++-------------
- src/demuxer/tsDemuxer.h | 4 ++--
- src/fileOps.cpp | 2 +-
- src/fileOps.h | 8 ++++----
- src/filestreaming.cpp | 2 +-
- src/pvrclient-mythtv.cpp | 2 +-
- src/pvrclient-mythtv.h | 8 ++++----
- src/tools.h | 2 +-
- 16 files changed, 46 insertions(+), 46 deletions(-)
-
-diff --git a/src/categories.cpp b/src/categories.cpp
-index 1a10f9c..03d1867 100644
---- a/src/categories.cpp
-+++ b/src/categories.cpp
-@@ -22,7 +22,7 @@
-
- #include "categories.h"
- #include "client.h"
--#include <platform/os.h>
-+#include <p8-platform/os.h>
-
- #define CATEGORIES_FILENAME "eit_categories.txt"
- #define CATEGORIES_MAXLINESIZE 255
-diff --git a/src/cppmyth/MythScheduleHelper75.cpp b/src/cppmyth/MythScheduleHelper75.cpp
-index 58f0a87..be8beb9 100644
---- a/src/cppmyth/MythScheduleHelper75.cpp
-+++ b/src/cppmyth/MythScheduleHelper75.cpp
-@@ -34,7 +34,7 @@ using namespace ADDON;
-
- MythTimerTypeList MythScheduleHelper75::GetTimerTypes() const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- if (!m_timerTypeListInit)
- {
- m_timerTypeListInit = true;
-diff --git a/src/cppmyth/MythScheduleHelperNoHelper.cpp b/src/cppmyth/MythScheduleHelperNoHelper.cpp
-index 26358fc..751b895 100644
---- a/src/cppmyth/MythScheduleHelperNoHelper.cpp
-+++ b/src/cppmyth/MythScheduleHelperNoHelper.cpp
-@@ -40,7 +40,7 @@ MythScheduleHelperNoHelper::MythScheduleHelperNoHelper()
-
- MythTimerTypeList MythScheduleHelperNoHelper::GetTimerTypes() const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- return m_timerTypeList;
- }
-
-@@ -103,7 +103,7 @@ static inline uint32_t expiration_key(const MythScheduleHelperNoHelper::RuleExpi
-
- int MythScheduleHelperNoHelper::GetRuleExpirationId(const RuleExpiration& expiration) const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- if (!m_expirationByKeyInit)
- {
- m_expirationByKeyInit = true;
-@@ -119,7 +119,7 @@ int MythScheduleHelperNoHelper::GetRuleExpirationId(const RuleExpiration& expira
-
- MythScheduleHelperNoHelper::RuleExpiration MythScheduleHelperNoHelper::GetRuleExpiration(int id) const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- static RuleExpiration _empty(false, 0, false);
- RuleExpirationMap::const_iterator it = GetRuleExpirationMap().find(id);
- if (it != m_expirationMap.end())
-@@ -129,7 +129,7 @@ MythScheduleHelperNoHelper::RuleExpiration MythScheduleHelperNoHelper::GetRuleEx
-
- int MythScheduleHelperNoHelper::GetRuleRecordingGroupId(const std::string& name) const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- if (!m_recGroupByNameInit)
- {
- m_recGroupByNameInit = true;
-@@ -145,7 +145,7 @@ int MythScheduleHelperNoHelper::GetRuleRecordingGroupId(const std::string& name)
-
- std::string MythScheduleHelperNoHelper::GetRuleRecordingGroupName(int id) const
- {
-- PLATFORM::CLockObject lock(m_lock);
-+ P8PLATFORM::CLockObject lock(m_lock);
- static std::string _empty = "";
- if (!m_recGroupByIdInit)
- {
-diff --git a/src/cppmyth/MythScheduleHelperNoHelper.h b/src/cppmyth/MythScheduleHelperNoHelper.h
-index 686c770..e3ec012 100644
---- a/src/cppmyth/MythScheduleHelperNoHelper.h
-+++ b/src/cppmyth/MythScheduleHelperNoHelper.h
-@@ -73,7 +73,7 @@ class MythScheduleHelperNoHelper : public MythScheduleManager::VersionHelper
- virtual const MythTimerType::AttributeList& GetRuleExpirationNameList() const;
- virtual const MythTimerType::AttributeList& GetRuleRecordingGroupList() const;
-
-- mutable PLATFORM::CMutex m_lock;
-+ mutable P8PLATFORM::CMutex m_lock;
-
- mutable bool m_timerTypeListInit;
- mutable MythTimerTypeList m_timerTypeList;
-diff --git a/src/cppmyth/MythScheduleManager.cpp b/src/cppmyth/MythScheduleManager.cpp
-index 3381496..7466ac6 100644
---- a/src/cppmyth/MythScheduleManager.cpp
-+++ b/src/cppmyth/MythScheduleManager.cpp
-@@ -32,7 +32,7 @@
- #include <math.h>
-
- using namespace ADDON;
--using namespace PLATFORM;
-+using namespace P8PLATFORM;
-
- enum
- {
-diff --git a/src/cppmyth/MythScheduleManager.h b/src/cppmyth/MythScheduleManager.h
-index 00b0b6b..3106c2d 100644
---- a/src/cppmyth/MythScheduleManager.h
-+++ b/src/cppmyth/MythScheduleManager.h
-@@ -26,7 +26,7 @@
- #include "MythChannel.h"
-
- #include <kodi/xbmc_pvr_types.h>
--#include <platform/threads/mutex.h>
-+#include <p8-platform/threads/mutex.h>
-
- #include <vector>
- #include <list>
-@@ -209,7 +209,7 @@ class MythScheduleManager
- static uint32_t MakeIndex(const MythRecordingRule& rule);
-
- private:
-- mutable PLATFORM::CMutex m_lock;
-+ mutable P8PLATFORM::CMutex m_lock;
- Myth::Control *m_control;
-
- int m_protoVersion;
-diff --git a/src/demux.cpp b/src/demux.cpp
-index 452f786..98243fb 100644
---- a/src/demux.cpp
-+++ b/src/demux.cpp
-@@ -20,7 +20,7 @@
- *
- */
-
--#include <platform/os.h>
-+#include <p8-platform/os.h>
- #include <kodi/libXBMC_pvr.h>
- #include <kodi/xbmc_codec_types.h>
-
-@@ -34,7 +34,7 @@
- #define READAV_TIMEOUT 10000 // 10 secs
-
- using namespace ADDON;
--using namespace PLATFORM;
-+using namespace P8PLATFORM;
-
- void DemuxLog(int level, char *msg)
- {
-diff --git a/src/demux.h b/src/demux.h
-index f86e27a..b84c1bc 100644
---- a/src/demux.h
-+++ b/src/demux.h
-@@ -25,9 +25,9 @@
- #include "client.h"
-
- #include <mythstream.h>
--#include <platform/threads/threads.h>
--#include <platform/threads/mutex.h>
--#include <platform/util/buffer.h>
-+#include <p8-platform/threads/threads.h>
-+#include <p8-platform/threads/mutex.h>
-+#include <p8-platform/util/buffer.h>
- #include <kodi/xbmc_stream_utils.hpp>
-
- #include <map>
-@@ -35,7 +35,7 @@
-
- #define AV_BUFFER_SIZE 131072
-
--class Demux : public TSDemux::TSDemuxer, PLATFORM::CThread
-+class Demux : public TSDemux::TSDemuxer, P8PLATFORM::CThread
- {
- public:
- Demux(Myth::Stream *file);
-@@ -56,8 +56,8 @@ class Demux : public TSDemux::TSDemuxer, PLATFORM::CThread
- private:
- Myth::Stream *m_file;
- uint16_t m_channel;
-- PLATFORM::SyncedBuffer<DemuxPacket*> m_demuxPacketBuffer;
-- PLATFORM::CMutex m_mutex;
-+ P8PLATFORM::SyncedBuffer<DemuxPacket*> m_demuxPacketBuffer;
-+ P8PLATFORM::CMutex m_mutex;
- ADDON::XbmcStreamProperties m_streams;
-
- bool get_stream_data(TSDemux::STREAM_PKT* pkt);
-diff --git a/src/demuxer/tsDemuxer.cpp b/src/demuxer/tsDemuxer.cpp
-index 00e40c1..fc283a8 100644
---- a/src/demuxer/tsDemuxer.cpp
-+++ b/src/demuxer/tsDemuxer.cpp
-@@ -56,7 +56,7 @@ AVContext::AVContext(TSDemuxer* const demux, uint64_t pos, uint16_t channel)
-
- void AVContext::Reset(void)
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- pid = 0xffff;
- transport_error = false;
-@@ -75,7 +75,7 @@ uint16_t AVContext::GetPID() const
-
- PACKET_TYPE AVContext::GetPIDType() const
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- if (packet)
- return packet->packet_type;
-@@ -84,7 +84,7 @@ PACKET_TYPE AVContext::GetPIDType() const
-
- uint16_t AVContext::GetPIDChannel() const
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- if (packet)
- return packet->channel;
-@@ -93,7 +93,7 @@ uint16_t AVContext::GetPIDChannel() const
-
- bool AVContext::HasPIDStreamData() const
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- // PES packets append frame buffer of elementary stream until next start of unit
- // On new unit start, flag is held
-@@ -109,7 +109,7 @@ bool AVContext::HasPIDPayload() const
-
- ElementaryStream* AVContext::GetPIDStream()
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- if (packet && packet->packet_type == PACKET_TYPE_PES)
- return packet->stream;
-@@ -118,7 +118,7 @@ ElementaryStream* AVContext::GetPIDStream()
-
- std::vector<ElementaryStream*> AVContext::GetStreams()
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- std::vector<ElementaryStream*> v;
- for (std::map<uint16_t, Packet>::iterator it = packets.begin(); it != packets.end(); ++it)
-@@ -129,7 +129,7 @@ std::vector<ElementaryStream*> AVContext::GetStreams()
-
- void AVContext::StartStreaming(uint16_t pid)
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- std::map<uint16_t, Packet>::iterator it = packets.find(pid);
- if (it != packets.end())
-@@ -138,7 +138,7 @@ void AVContext::StartStreaming(uint16_t pid)
-
- void AVContext::StopStreaming(uint16_t pid)
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- std::map<uint16_t, Packet>::iterator it = packets.find(pid);
- if (it != packets.end())
-@@ -147,7 +147,7 @@ void AVContext::StopStreaming(uint16_t pid)
-
- ElementaryStream* AVContext::GetStream(uint16_t pid) const
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- std::map<uint16_t, Packet>::const_iterator it = packets.find(pid);
- if (it != packets.end())
-@@ -157,7 +157,7 @@ ElementaryStream* AVContext::GetStream(uint16_t pid) const
-
- uint16_t AVContext::GetChannel(uint16_t pid) const
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- std::map<uint16_t, Packet>::const_iterator it = packets.find(pid);
- if (it != packets.end())
-@@ -167,7 +167,7 @@ uint16_t AVContext::GetChannel(uint16_t pid) const
-
- void AVContext::ResetPackets()
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- for (std::map<uint16_t, Packet>::iterator it = packets.begin(); it != packets.end(); ++it)
- {
-@@ -391,7 +391,7 @@ uint64_t AVContext::GetPosition() const
- */
- int AVContext::ProcessTSPacket()
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- int ret = AVCONTEXT_CONTINUE;
- std::map<uint16_t, Packet>::iterator it;
-@@ -516,7 +516,7 @@ int AVContext::ProcessTSPacket()
- */
- int AVContext::ProcessTSPayload()
- {
-- PLATFORM::CLockObject lock(mutex);
-+ P8PLATFORM::CLockObject lock(mutex);
-
- if (!this->packet)
- return AVCONTEXT_CONTINUE;
-diff --git a/src/demuxer/tsDemuxer.h b/src/demuxer/tsDemuxer.h
-index 2efbb58..ebb779e 100644
---- a/src/demuxer/tsDemuxer.h
-+++ b/src/demuxer/tsDemuxer.h
-@@ -24,7 +24,7 @@
-
- #include "tsPacket.h"
- #include "elementaryStream.h"
--#include <platform/threads/mutex.h>
-+#include <p8-platform/threads/mutex.h>
-
- #include <map>
- #include <vector>
-@@ -102,7 +102,7 @@ namespace TSDemux
- int parse_ts_pes();
-
- // Critical section
-- mutable PLATFORM::CMutex mutex;
-+ mutable P8PLATFORM::CMutex mutex;
-
- // AV stream owner
- TSDemuxer* m_demux;
-diff --git a/src/fileOps.cpp b/src/fileOps.cpp
-index 80d6462..71a71f9 100644
---- a/src/fileOps.cpp
-+++ b/src/fileOps.cpp
-@@ -34,7 +34,7 @@
- #define FILEOPS_RECORDING_DUMMY_ICON "recording.png"
-
- using namespace ADDON;
--using namespace PLATFORM;
-+using namespace P8PLATFORM;
-
- FileOps::FileOps(FileConsumer *consumer, const std::string& server, unsigned wsapiport, const std::string& wsapiSecurityPin)
- : CThread()
-diff --git a/src/fileOps.h b/src/fileOps.h
-index 58081f4..90c023b 100644
---- a/src/fileOps.h
-+++ b/src/fileOps.h
-@@ -25,7 +25,7 @@
- #include "cppmyth/MythProgramInfo.h"
-
- #include <mythwsapi.h>
--#include <platform/threads/threads.h>
-+#include <p8-platform/threads/threads.h>
-
- #include <string>
- #include <vector>
-@@ -39,7 +39,7 @@ class FileConsumer
- virtual void HandleCleanedCache() = 0;
- };
-
--class FileOps : public PLATFORM::CThread
-+class FileOps : public P8PLATFORM::CThread
- {
- public:
- enum FileType
-@@ -152,7 +152,7 @@ class FileOps : public PLATFORM::CThread
- int m_errorCount;
- };
-
-- PLATFORM::CMutex m_lock;
-- PLATFORM::CEvent m_queueContent;
-+ P8PLATFORM::CMutex m_lock;
-+ P8PLATFORM::CEvent m_queueContent;
- std::list<FileOps::JobItem> m_jobQueue;
- };
-diff --git a/src/filestreaming.cpp b/src/filestreaming.cpp
-index d25680e..eeaa672 100644
---- a/src/filestreaming.cpp
-+++ b/src/filestreaming.cpp
-@@ -22,7 +22,7 @@
-
- #include "filestreaming.h"
- #include "client.h"
--#include <platform/os.h>
-+#include <p8-platform/os.h>
-
- #define MAX_READ_SIZE 131072
-
-diff --git a/src/pvrclient-mythtv.cpp b/src/pvrclient-mythtv.cpp
-index 5901d55..f0ed353 100644
---- a/src/pvrclient-mythtv.cpp
-+++ b/src/pvrclient-mythtv.cpp
-@@ -31,7 +31,7 @@
- #include <cassert>
-
- using namespace ADDON;
--using namespace PLATFORM;
-+using namespace P8PLATFORM;
-
- PVRClientMythTV::PVRClientMythTV()
- : m_connectionError(CONN_ERROR_NO_ERROR)
-diff --git a/src/pvrclient-mythtv.h b/src/pvrclient-mythtv.h
-index e9efc64..561fee3 100644
---- a/src/pvrclient-mythtv.h
-+++ b/src/pvrclient-mythtv.h
-@@ -28,7 +28,7 @@
- #include "filestreaming.h"
-
- #include <kodi/xbmc_pvr_types.h>
--#include <platform/threads/mutex.h>
-+#include <p8-platform/threads/mutex.h>
- #include <mythsharedptr.h>
- #include <mythcontrol.h>
- #include <mytheventhandler.h>
-@@ -162,7 +162,7 @@ class PVRClientMythTV : public Myth::EventSubscriber, FileConsumer
- // Backend
- FileOps *m_fileOps;
- MythScheduleManager *m_scheduleManager;
-- PLATFORM::CMutex m_lock;
-+ P8PLATFORM::CMutex m_lock;
-
- // Categories
- Categories m_categories;
-@@ -182,7 +182,7 @@ class PVRClientMythTV : public Myth::EventSubscriber, FileConsumer
- PVRChannelGroupMap m_PVRChannelGroups;
- typedef std::map<unsigned int, unsigned int> PVRChannelMap;
- PVRChannelMap m_PVRChannelUidById;
-- mutable PLATFORM::CMutex m_channelsLock;
-+ mutable P8PLATFORM::CMutex m_channelsLock;
- int FillChannelsAndChannelGroups();
- MythChannel FindChannel(uint32_t channelId) const;
- int FindPVRChannelUid(uint32_t channelId) const;
-@@ -192,7 +192,7 @@ class PVRClientMythTV : public Myth::EventSubscriber, FileConsumer
-
- // Recordings
- ProgramInfoMap m_recordings;
-- mutable PLATFORM::CMutex m_recordingsLock;
-+ mutable P8PLATFORM::CMutex m_recordingsLock;
- unsigned m_recordingChangePinCount;
- bool m_recordingsAmountChange;
- int m_recordingsAmount;
-diff --git a/src/tools.h b/src/tools.h
-index 45666bf..7ad3af9 100644
---- a/src/tools.h
-+++ b/src/tools.h
-@@ -21,7 +21,7 @@
- *
- */
-
--#include <platform/os.h>
-+#include <p8-platform/os.h>
- #include <math.h>
-
- #ifdef __WINDOWS__
-
-From 960830c023c74b54883ed558763275877088be90 Mon Sep 17 00:00:00 2001
-From: "h.udo" <hudokkow@gmail.com>
-Date: Wed, 6 Jan 2016 15:21:40 +0000
-Subject: [PATCH 2/2] [cmake] Update to p8-platform
-
----
- CMakeLists.txt | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 79d1b98..95fdbbb 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -9,10 +9,10 @@ enable_language(C)
-
- find_package(kodi REQUIRED)
- find_package(kodiplatform REQUIRED)
--find_package(platform REQUIRED)
-+find_package(p8-platform REQUIRED)
-
- include_directories(${kodiplatform_INCLUDE_DIRS}
-- ${platform_INCLUDE_DIRS}
-+ ${p8-platform_INCLUDE_DIRS}
- ${KODI_INCLUDE_DIR}
- ${PROJECT_SOURCE_DIR}/lib/cppmyth/src)
-
-@@ -54,7 +54,7 @@ set(MYTHTV_SOURCES src/avinfo.cpp
-
- add_subdirectory(lib/cppmyth)
-
--set(DEPLIBS ${platform_LIBRARIES} cppmyth)
-+set(DEPLIBS ${p8-platform_LIBRARIES} cppmyth)
- if(WIN32)
- list(APPEND DEPLIBS ws2_32)
- else()
diff --git a/abs/extra/kodi-addon-pvr-mythtv/PKGBUILD b/abs/extra/kodi-addon-pvr-mythtv/PKGBUILD
new file mode 100644
index 0000000..484b97d
--- /dev/null
+++ b/abs/extra/kodi-addon-pvr-mythtv/PKGBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Jameson Pugh <imntreal@gmail.com>
+
+pkgname=kodi-addon-pvr-mythtv
+pkgver=5.10.6
+_kodiver=18.1
+_codename=Leia
+pkgrel=1
+pkgdesc='MythTV PVR client addon for Kodi'
+arch=('armv7h' 'i686' 'x86_64')
+url="http://janbar.github.io/pvr.mythtv/"
+license=('GPL')
+makedepends=('cmake' 'git')
+depends=("kodi")
+source=("https://github.com/janbar/pvr.mythtv/archive/${pkgver}-$_codename.tar.gz"
+ "https://github.com/xbmc/xbmc/archive/${_kodiver}-$_codename.tar.gz")
+
+build() {
+ mkdir -p "pvr.mythtv-${pkgver}/build"
+ cd "pvr.mythtv-${pkgver}/build"
+
+ cmake \
+ -DADDONS_TO_BUILD=pvr.mythtv \
+ -DADDONS_SRC_PREFIX=../.. \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=./addons \
+ ../../xbmc-${_kodiver}-$_codename/cmake/addons
+ make
+}
+
+package() {
+ cd "pvr.mythtv-${pkgver}/build/build/depends"
+ install -d "${pkgdir}/usr/lib/kodi/addons/"
+ cp -r ./lib/kodi/addons/pvr.mythtv "${pkgdir}/usr/lib/kodi/addons"
+ install -d "${pkgdir}/usr/share/kodi/addons/"
+ cp -r ./share/kodi/addons/pvr.mythtv "${pkgdir}/usr/share/kodi/addons"
+}
+
+# vim:set ts=2 sw=2 et:
+
+md5sums=('a375711e6e34ef33cc8161059bb55f30'
+ '02062e4de4e3e6d540793e211812ebf3')
diff --git a/abs/extra/kodi/10160.patch b/abs/extra/kodi/10160.patch
deleted file mode 100644
index 73923ea..0000000
--- a/abs/extra/kodi/10160.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/xbmc/filesystem/DllLibCurl.h b/xbmc/filesystem/DllLibCurl.h
-index 1bdaae1..9e78a91 100644
---- a/xbmc/filesystem/DllLibCurl.h
-+++ b/xbmc/filesystem/DllLibCurl.h
-@@ -52,7 +52,7 @@ namespace XCURL
- virtual CURLMcode multi_fdset(CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)=0;
- virtual CURLMcode multi_timeout(CURLM *multi_handle, long *timeout)=0;
- virtual CURLMsg* multi_info_read(CURLM *multi_handle, int *msgs_in_queue)=0;
-- virtual void multi_cleanup(CURL_HANDLE * handle )=0;
-+ virtual CURLMcode multi_cleanup(CURLM * handle )=0;
- virtual struct curl_slist* slist_append(struct curl_slist *, const char *)=0;
- virtual void slist_free_all(struct curl_slist *)=0;
- };
-@@ -77,7 +77,7 @@ namespace XCURL
- DEFINE_METHOD5(CURLMcode, multi_fdset, (CURLM *p1, fd_set *p2, fd_set *p3, fd_set *p4, int *p5))
- DEFINE_METHOD2(CURLMcode, multi_timeout, (CURLM *p1, long *p2))
- DEFINE_METHOD2(CURLMsg*, multi_info_read, (CURLM *p1, int *p2))
-- DEFINE_METHOD1(void, multi_cleanup, (CURLM *p1))
-+ DEFINE_METHOD1(CURLMcode, multi_cleanup, (CURLM *p1))
- DEFINE_METHOD2(struct curl_slist*, slist_append, (struct curl_slist * p1, const char * p2))
- DEFINE_METHOD1(void, slist_free_all, (struct curl_slist * p1))
- DEFINE_METHOD1(const char *, easy_strerror, (CURLcode p1))
diff --git a/abs/extra/kodi/10775.patch b/abs/extra/kodi/10775.patch
deleted file mode 100644
index 6188484..0000000
--- a/abs/extra/kodi/10775.patch
+++ /dev/null
@@ -1,839 +0,0 @@
-From cc3ae0339faf2b669bee20cb360c526410910f42 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:36 +0100
-Subject: [PATCH 1/4] [cec] bump to libCEC 4.0.0
-
----
- .../resource.language.en_gb/resources/strings.po | 5 -
- configure.ac | 4 +-
- project/BuildDependencies/scripts/0_package.list | 2 +-
- project/cmake/modules/FindCEC.cmake | 2 +-
- system/peripherals.xml | 1 -
- tools/depends/target/Makefile | 5 +-
- tools/depends/target/libcec/Makefile | 4 +-
- tools/depends/target/p8-platform/Makefile | 34 ++++
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 192 +++++++++------------
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 17 +-
- 10 files changed, 138 insertions(+), 128 deletions(-)
- create mode 100644 tools/depends/target/p8-platform/Makefile
-
-diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
-index e3f8a37..e482196 100644
---- a/addons/resource.language.en_gb/resources/strings.po
-+++ b/addons/resource.language.en_gb/resources/strings.po
-@@ -16376,11 +16376,6 @@ msgctxt "#36021"
- msgid "Physical address (overrules HDMI port)"
- msgstr ""
-
--#: system/peripherals.xml
--msgctxt "#36022"
--msgid "COM port (leave empty unless needed)"
--msgstr ""
--
- #: xbmc/peripherals/devices/peripheralcecadapter.cpp
- msgctxt "#36023"
- msgid "Configuration updated"
-diff --git a/configure.ac b/configure.ac
-index e61d4ae..34fe643 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1453,9 +1453,9 @@ if test "x$use_libcec" != "xno"; then
- # libcec is dyloaded, so we need to check for its headers and link any depends.
- if test "x$use_libcec" != "xno"; then
- if test "x$use_libcec" != "xauto"; then
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
- else
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
- fi
-
- if test "x$use_libcec" != "xno"; then
-diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list
-index 9a5bccb..7b6ec1a 100644
---- a/project/BuildDependencies/scripts/0_package.list
-+++ b/project/BuildDependencies/scripts/0_package.list
-@@ -19,7 +19,7 @@ jsonschemabuilder-1.0.0-win32-3.7z
- libass-0.12.1-win32.7z
- libbluray-0.8.1-win32-vc120.7z
- libcdio-0.83-win32-2.7z
--libcec-3.0.0-win32-2.7z
-+libcec-4.0.0-win32-vc140.7z
- libexpat_2.0.1-win32.7z
- libflac-1.2.1-win32.7z
- libfribidi-0.19.2-win32.7z
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index f939c0b..58a9d24 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -24,7 +24,6 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-- <setting key="port" type="string" value="" label="36022" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile
-index 9bca188..82b378d 100644
---- a/tools/depends/target/Makefile
-+++ b/tools/depends/target/Makefile
-@@ -15,7 +15,7 @@
- python26 libshairplay \
- libplist libcec libbluray boost tinyxml dummy-libxbmc \
- libamplayer libssh taglib libusb libnfs \
-- pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib
-+ pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib p8-platform
-
- FFMPEG_DEPENDS = gnutls libdcadec
-
-@@ -101,7 +101,8 @@ pythonmodule-setuptools: python27
- libsdl2: $(LINUX_SYSTEM_LIBS)
- libxslt: libgcrypt
- ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS)
--libcec: platform
-+platform: p8-platform
-+libcec: p8-platform
- crossguid: $(CROSSGUID_DEPS)
-
- .installed-$(PLATFORM): $(DEPENDS)
-diff --git a/tools/depends/target/libcec/Makefile b/tools/depends/target/libcec/Makefile
-index f54af9e..c75b300 100644
---- a/tools/depends/target/libcec/Makefile
-+++ b/tools/depends/target/libcec/Makefile
-@@ -3,12 +3,12 @@ DEPS= ../../Makefile.include Makefile
-
- # lib name, version
- LIBNAME=libcec
--VERSION_MAJOR=3
-+VERSION_MAJOR=4
- VERSION_MINOR=0
- VERSION_PATCH=0
-
- VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
--SOURCE=$(LIBNAME)-$(VERSION)-6
-+SOURCE=$(LIBNAME)-$(VERSION)
- ARCHIVE=$(SOURCE).tar.gz
-
- LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).la
-diff --git a/tools/depends/target/p8-platform/Makefile b/tools/depends/target/p8-platform/Makefile
-new file mode 100644
-index 0000000..d5918d7
---- /dev/null
-+++ b/tools/depends/target/p8-platform/Makefile
-@@ -0,0 +1,34 @@
-+include ../../Makefile.include
-+DEPS= ../../Makefile.include Makefile
-+
-+# lib name, version
-+LIBNAME=p8-platform
-+VERSION=2.1.0.1
-+SOURCE=$(LIBNAME)-$(VERSION)
-+ARCHIVE=$(SOURCE).tar.gz
-+
-+LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).a
-+
-+all: .installed-$(PLATFORM)
-+
-+$(TARBALLS_LOCATION)/$(ARCHIVE):
-+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
-+
-+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
-+ rm -rf $(PLATFORM); mkdir -p $(PLATFORM)/build
-+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
-+ cd $(PLATFORM)/build; $(CMAKE) -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_LIBDIR=$(PREFIX)/lib ..
-+
-+$(LIBDYLIB): $(PLATFORM)
-+ $(MAKE) -C $(PLATFORM)/build
-+
-+.installed-$(PLATFORM): $(LIBDYLIB)
-+ $(MAKE) -C $(PLATFORM)/build install
-+ touch $@
-+
-+clean:
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-+distclean::
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index e6bcbce..a71dc4b 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -43,7 +43,7 @@ using namespace PERIPHERALS;
- using namespace ANNOUNCEMENT;
- using namespace CEC;
-
--#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(3, 0, 0)
-+#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(4, 0, 0)
-
- /* time in seconds to ignore standby commands from devices after the screensaver has been activated */
- #define SCREENSAVER_TIMEOUT 20
-@@ -119,25 +119,30 @@ void CPeripheralCecAdapter::ResetMembers(void)
- m_dll->CECDestroy(m_cecAdapter);
- m_cecAdapter = NULL;
- delete m_dll;
-- m_dll = NULL;
-- m_bStarted = false;
-- m_bHasButton = false;
-- m_bIsReady = false;
-- m_bHasConnectedAudioSystem = false;
-- m_strMenuLanguage = "???";
-- m_lastKeypress = 0;
-- m_lastChange = VOLUME_CHANGE_NONE;
-- m_iExitCode = EXITCODE_QUIT;
-- m_bIsMuted = false; // TODO fetch the correct initial value when system audiostatus is implemented in libCEC
-- m_bGoingToStandby = false;
-- m_bIsRunning = false;
-- m_bDeviceRemoved = false;
-- m_bActiveSourcePending = false;
-- m_bStandbyPending = false;
-+ m_dll = NULL;
-+ m_bStarted = false;
-+ m_bHasButton = false;
-+ m_bIsReady = false;
-+ m_bHasConnectedAudioSystem = false;
-+ m_strMenuLanguage = "???";
-+ m_lastKeypress = 0;
-+ m_lastChange = VOLUME_CHANGE_NONE;
-+ m_iExitCode = EXITCODE_QUIT;
-+ m_bIsMuted = false; //! @todo fetch the correct initial value when system audiostatus is implemented in libCEC
-+ m_bGoingToStandby = false;
-+ m_bIsRunning = false;
-+ m_bDeviceRemoved = false;
-+ m_bActiveSourcePending = false;
-+ m_bStandbyPending = false;
- m_bActiveSourceBeforeStandby = false;
-- m_bOnPlayReceived = false;
-- m_bPlaybackPaused = false;
-- m_queryThread = NULL;
-+ m_bOnPlayReceived = false;
-+ m_bPlaybackPaused = false;
-+ m_queryThread = NULL;
-+ m_bPowerOnScreensaver = false;
-+ m_bUseTVMenuLanguage = false;
-+ m_bSendInactiveSource = false;
-+ m_bPowerOffScreensaver = false;
-+ m_bShutdownOnStandby = false;
-
- m_currentButton.iButton = 0;
- m_currentButton.iDuration = 0;
-@@ -166,8 +171,8 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- if (bIgnoreDeactivate)
- CLog::Log(LOGDEBUG, "%s - ignoring OnScreensaverDeactivated for power action", __FUNCTION__);
- }
-- if (m_configuration.bPowerOnScreensaver == 1 && !bIgnoreDeactivate &&
-- m_configuration.bActivateSource == 1)
-+ if (m_bPowerOnScreensaver && !bIgnoreDeactivate &&
-+ m_configuration.bActivateSource)
- {
- ActivateSource();
- }
-@@ -175,7 +180,7 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- else if (flag == GUI && !strcmp(sender, "xbmc") && !strcmp(message, "OnScreensaverActivated") && m_bIsReady)
- {
- // Don't put devices to standby if application is currently playing
-- if ((!g_application.m_pPlayer->IsPlaying() && !g_application.m_pPlayer->IsPaused()) && m_configuration.bPowerOffScreensaver == 1)
-+ if (!g_application.m_pPlayer->IsPlaying() && m_bPowerOffScreensaver)
- {
- // only power off when we're the active source
- if (m_cecAdapter->IsLibCECActiveSource())
-@@ -241,14 +246,14 @@ bool CPeripheralCecAdapter::InitialiseFeature(const PeripheralFeature feature)
-
- SetConfigurationFromSettings();
- m_callbacks.Clear();
-- m_callbacks.CBCecLogMessage = &CecLogMessage;
-- m_callbacks.CBCecKeyPress = &CecKeyPress;
-- m_callbacks.CBCecCommand = &CecCommand;
-- m_callbacks.CBCecConfigurationChanged = &CecConfiguration;
-- m_callbacks.CBCecAlert = &CecAlert;
-- m_callbacks.CBCecSourceActivated = &CecSourceActivated;
-- m_configuration.callbackParam = this;
-- m_configuration.callbacks = &m_callbacks;
-+ m_callbacks.logMessage = &CecLogMessage;
-+ m_callbacks.keyPress = &CecKeyPress;
-+ m_callbacks.commandReceived = &CecCommand;
-+ m_callbacks.configurationChanged = &CecConfiguration;
-+ m_callbacks.alert = &CecAlert;
-+ m_callbacks.sourceActivated = &CecSourceActivated;
-+ m_configuration.callbackParam = this;
-+ m_configuration.callbacks = &m_callbacks;
-
- m_dll = new DllLibCEC;
- if (m_dll->Load() && m_dll->IsLoaded())
-@@ -414,7 +419,7 @@ void CPeripheralCecAdapter::Process(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices();
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-@@ -614,43 +619,43 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
--int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
-+void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- if (adapter->m_bIsReady)
- {
-- switch (command.opcode)
-+ switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
- /* a device was put in standby mode */
-- if (command.initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_configuration.bShutdownOnStandby == 1) &&
-+ if (command->initiator == CECDEVICE_TV &&
-+ (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
- adapter->m_bStarted = false;
- if (adapter->m_configuration.bPowerOffOnStandby == 1)
- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_configuration.bShutdownOnStandby == 1)
-+ else if (adapter->m_bShutdownOnStandby)
- g_application.ExecuteXBMCAction("Shutdown");
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-- if (adapter->m_configuration.bUseTVMenuLanguage == 1 && command.initiator == CECDEVICE_TV && command.parameters.size == 3)
-+ if (adapter->m_bUseTVMenuLanguage == 1 && command->initiator == CECDEVICE_TV && command->parameters.size == 3)
- {
- char strNewLanguage[4];
- for (int iPtr = 0; iPtr < 3; iPtr++)
-- strNewLanguage[iPtr] = command.parameters[iPtr];
-+ strNewLanguage[iPtr] = command->parameters[iPtr];
- strNewLanguage[3] = 0;
- adapter->SetMenuLanguage(strNewLanguage);
- }
- break;
- case CEC_OPCODE_DECK_CONTROL:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1 &&
-- command.parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1 &&
-+ command->parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -659,17 +664,17 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- }
- break;
- case CEC_OPCODE_PLAY:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1)
- {
-- if (command.parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
-+ if (command->parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
- {
- cec_keypress key;
- key.duration = 500;
- key.keycode = CEC_USER_CONTROL_CODE_PLAY;
- adapter->PushCecKeypress(key);
- }
-- else if (command.parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
-+ else if (command->parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -682,25 +687,23 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- break;
- }
- }
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration config)
-+void CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration* config)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- CSingleLock lock(adapter->m_critSection);
-- adapter->SetConfigurationFromLibCEC(config);
-- return 1;
-+ adapter->SetConfigurationFromLibCEC(*config);
- }
-
--int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
-+void CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- bool bReopenConnection(false);
- int iAlertString(0);
-@@ -743,18 +746,13 @@ int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, con
-
- if (bReopenConnection)
- adapter->ReopenConnection();
--
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress key)
-+void CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress* key)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-- if (!adapter)
-- return 0;
--
-- adapter->PushCecKeypress(key);
-- return 1;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-+ if (!!adapter)
-+ adapter->PushCecKeypress(*key);
- }
-
- void CPeripheralCecAdapter::GetNextKey(void)
-@@ -1154,7 +1152,7 @@ void CPeripheralCecAdapter::OnSettingChanged(const std::string &strChangedSettin
-
- void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_logical_address address, const uint8_t activated)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
- return;
-
-@@ -1196,14 +1194,14 @@ void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_log
- }
- }
-
--int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message message)
-+void CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message* message)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- int iLevel = -1;
-- switch (message.level)
-+ switch (message->level)
- {
- case CEC_LOG_ERROR:
- iLevel = LOGERROR;
-@@ -1223,9 +1221,7 @@ int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message me
- }
-
- if (iLevel >= CEC_LOG_NOTICE || (iLevel >= 0 && CLog::IsLogLevelLogged(LOGDEBUG) && g_advancedSettings.CanLogComponent(LOGCEC)))
-- CLog::Log(iLevel, "%s - %s", __FUNCTION__, message.message);
--
-- return 1;
-+ CLog::Log(iLevel, "%s - %s", __FUNCTION__, message->message);
- }
-
- void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configuration &config)
-@@ -1270,35 +1266,18 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- bChanged |= WriteLogicalAddresses(config.powerOffDevices, "standby_devices", "standby_devices_advanced");
-
- // set the boolean settings
-- m_configuration.bUseTVMenuLanguage = config.bUseTVMenuLanguage;
-- bChanged |= SetSetting("use_tv_menu_language", m_configuration.bUseTVMenuLanguage == 1);
--
- m_configuration.bActivateSource = config.bActivateSource;
- bChanged |= SetSetting("activate_source", m_configuration.bActivateSource == 1);
-
-- m_configuration.bPowerOffScreensaver = config.bPowerOffScreensaver;
-- bChanged |= SetSetting("cec_standby_screensaver", m_configuration.bPowerOffScreensaver == 1);
--
-- m_configuration.bPowerOnScreensaver = config.bPowerOnScreensaver;
-- bChanged |= SetSetting("cec_wake_screensaver", m_configuration.bPowerOnScreensaver == 1);
--
- m_configuration.bPowerOffOnStandby = config.bPowerOffOnStandby;
-
-- m_configuration.bSendInactiveSource = config.bSendInactiveSource;
-- bChanged |= SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1);
--
- m_configuration.iFirmwareVersion = config.iFirmwareVersion;
-- m_configuration.bShutdownOnStandby = config.bShutdownOnStandby;
-
- memcpy(m_configuration.strDeviceLanguage, config.strDeviceLanguage, 3);
- m_configuration.iFirmwareBuildDate = config.iFirmwareBuildDate;
-
- SetVersionInfo(m_configuration);
-
-- bChanged |= SetSetting("standby_pc_on_tv_standby",
-- m_configuration.bPowerOffOnStandby == 1 ? 13011 :
-- m_configuration.bShutdownOnStandby == 1 ? 13005 : 36028);
--
- if (bChanged)
- CLog::Log(LOGDEBUG, "SetConfigurationFromLibCEC - settings updated by libCEC");
- }
-@@ -1306,7 +1285,7 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- {
- // client version matches the version of libCEC that we originally used the API from
-- m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(3, 0, 0);
-+ m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(4, 0, 0);
-
- // device name 'XBMC'
- snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str());
-@@ -1373,16 +1352,16 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- ReadLogicalAddresses(GetSettingInt("standby_devices"), m_configuration.powerOffDevices);
-
- // read the boolean settings
-- m_configuration.bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
-+ m_bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
- m_configuration.bActivateSource = GetSettingBool("activate_source") ? 1 : 0;
-- m_configuration.bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
-- m_configuration.bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-- m_configuration.bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
-+ m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-+ m_bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
- m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
-- m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0;
-+ m_bShutdownOnStandby = iStandbyAction == 13005;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1529,14 +1508,11 @@ bool CPeripheralCecAdapterUpdateThread::WaitReady(void)
- void CPeripheralCecAdapterUpdateThread::UpdateMenuLanguage(void)
- {
- // request the menu language of the TV
-- if (m_configuration.bUseTVMenuLanguage == 1)
-+ if (m_adapter->m_bUseTVMenuLanguage == 1)
- {
- CLog::Log(LOGDEBUG, "%s - requesting the menu language of the TV", __FUNCTION__);
-- cec_menu_language language;
-- if (m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV, &language))
-- m_adapter->SetMenuLanguage(language.language);
-- else
-- CLog::Log(LOGDEBUG, "%s - unknown menu language", __FUNCTION__);
-+ std::string language(m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV));
-+ m_adapter->SetMenuLanguage(language.c_str());
- }
- else
- {
-@@ -1553,9 +1529,9 @@ std::string CPeripheralCecAdapterUpdateThread::UpdateAudioSystemStatus(void)
- if (m_adapter->m_cecAdapter->IsActiveDeviceType(CEC_DEVICE_TYPE_AUDIO_SYSTEM))
- {
- // request the OSD name of the amp
-- cec_osd_name ampName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM);
-- CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.name);
-- strAmpName += StringUtils::Format("%s", ampName.name);
-+ std::string ampName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM));
-+ CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.c_str());
-+ strAmpName += StringUtils::Format("%s", ampName.c_str());
-
- // set amp present
- m_adapter->SetAudioSystemConnected(true);
-@@ -1592,8 +1568,8 @@ bool CPeripheralCecAdapterUpdateThread::SetInitialConfiguration(void)
-
- // request the OSD name of the TV
- std::string strNotification;
-- cec_osd_name tvName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV);
-- strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.name);
-+ std::string tvName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV));
-+ strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.c_str());
-
- std::string strAmpName = UpdateAudioSystemStatus();
- if (!strAmpName.empty())
-@@ -1766,7 +1742,7 @@ void CPeripheralCecAdapter::ProcessStandbyDevices(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices(CECDEVICE_BROADCAST);
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource == 1)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index e7f769f..30b22c9 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -146,12 +146,12 @@ namespace PERIPHERALS
- void SetMenuLanguage(const char *strLanguage);
-
- // callbacks from libCEC
-- static int CecLogMessage(void *cbParam, const CEC::cec_log_message message);
-- static int CecCommand(void *cbParam, const CEC::cec_command command);
-- static int CecConfiguration(void *cbParam, const CEC::libcec_configuration config);
-- static int CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter data);
-+ static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-+ static void CecCommand(void *cbParam, const CEC::cec_command* command);
-+ static void CecConfiguration(void *cbParam, const CEC::libcec_configuration* config);
-+ static void CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter data);
- static void CecSourceActivated(void *param, const CEC::cec_logical_address address, const uint8_t activated);
-- static int CecKeyPress(void *cbParam, const CEC::cec_keypress key);
-+ static void CecKeyPress(void *cbParam, const CEC::cec_keypress* key);
-
- DllLibCEC* m_dll;
- CEC::ICECAdapter* m_cecAdapter;
-@@ -181,7 +181,12 @@ namespace PERIPHERALS
- bool m_bActiveSourceBeforeStandby;
- bool m_bOnPlayReceived;
- bool m_bPlaybackPaused;
-- std::string m_strComPort;
-+ std::string m_strComPort;
-+ bool m_bPowerOnScreensaver;
-+ bool m_bUseTVMenuLanguage;
-+ bool m_bSendInactiveSource;
-+ bool m_bPowerOffScreensaver;
-+ bool m_bShutdownOnStandby;
- };
-
- class CPeripheralCecAdapterUpdateThread : public CThread
-
-From 82fe52deb8c11df31fbdf8c298b28a5e1a1491aa Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:48 +0100
-Subject: [PATCH 2/4] [cec] Added advanced settings for action when TV goes
- standby
-
-Added advances settings for action when TV goes standby : Pause
-playback, Stop playback, Exit Kodi
----
- system/peripherals.xml | 2 +-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 47 ++++++++++++++++++-----
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 1 +
- 3 files changed, 39 insertions(+), 11 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 58a9d24..1fa31e1 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index a71dc4b..1b7c38e 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -55,6 +55,10 @@ using namespace CEC;
- #define LOCALISED_ID_TV_AVR 36039
- #define LOCALISED_ID_STOP 36044
- #define LOCALISED_ID_PAUSE 36045
-+#define LOCALISED_ID_POWEROFF 13005
-+#define LOCALISED_ID_SUSPEND 13011
-+#define LOCALISED_ID_QUIT 13009
-+#define LOCALISED_ID_IGNORE 36028
-
- #define LOCALISED_ID_NONE 231
-
-@@ -619,6 +623,35 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
-+void CPeripheralCecAdapter::OnTvStandby(void)
-+{
-+ int iActionOnTvStandby = GetSettingInt("standby_pc_on_tv_standby");
-+ switch (iActionOnTvStandby)
-+ {
-+ case LOCALISED_ID_POWEROFF:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Shutdown");
-+ break;
-+ case LOCALISED_ID_SUSPEND:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Suspend");
-+ break;
-+ case LOCALISED_ID_QUIT:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Quit");
-+ break;
-+ case LOCALISED_ID_PAUSE:
-+ g_application.OnAction(CAction(ACTION_PAUSE));
-+ break;
-+ case LOCALISED_ID_STOP:
-+ g_application.StopPlaying();
-+ break;
-+ default:
-+ CLog::Log(LOGERROR, "%s - Unexpected [standby_pc_on_tv_standby] setting value", __FUNCTION__);
-+ break;
-+ }
-+}
-+
- void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
- CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-@@ -630,16 +663,10 @@ void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command
- switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
-- /* a device was put in standby mode */
- if (command->initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
-- adapter->m_bStarted = false;
-- if (adapter->m_configuration.bPowerOffOnStandby == 1)
-- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_bShutdownOnStandby)
-- g_application.ExecuteXBMCAction("Shutdown");
-+ adapter->OnTvStandby();
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-@@ -1360,8 +1387,8 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
-- m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
-- m_bShutdownOnStandby = iStandbyAction == 13005;
-+ m_configuration.bPowerOffOnStandby = iStandbyAction == LOCALISED_ID_SUSPEND ? 1 : 0;
-+ m_bShutdownOnStandby = iStandbyAction == LOCALISED_ID_POWEROFF;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1373,7 +1400,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- if (GetSettingBool("pause_playback_on_deactivate"))
- {
-- SetSetting("pause_or_stop_playback_on_deactivate", 36045);
-+ SetSetting("pause_or_stop_playback_on_deactivate", LOCALISED_ID_PAUSE);
- SetSetting("pause_playback_on_deactivate", false);
- }
- }
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index 30b22c9..9274eab 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -144,6 +144,7 @@ namespace PERIPHERALS
-
- void SetAudioSystemConnected(bool bSetTo);
- void SetMenuLanguage(const char *strLanguage);
-+ void OnTvStandby(void);
-
- // callbacks from libCEC
- static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-
-From f0e1725617e41e841c9c24a20f1fc9b37347c8c3 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:56 +0100
-Subject: [PATCH 3/4] [cec] add CEC IMX adapter as known type and set no
- polling.
-
-that eliminates extensive periodic /sys walkthrough
-
-(this is reused Lars's commit e59d7e028288464e6890141a830e4a83d4b9d065)
----
- xbmc/peripherals/PeripheralTypes.h | 5 +++++
- xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 6 ++++++
- 2 files changed, 11 insertions(+)
-
-diff --git a/xbmc/peripherals/PeripheralTypes.h b/xbmc/peripherals/PeripheralTypes.h
-index 34ce2ef..c87242f 100644
---- a/xbmc/peripherals/PeripheralTypes.h
-+++ b/xbmc/peripherals/PeripheralTypes.h
-@@ -38,7 +38,8 @@
- PERIPHERAL_BUS_USB,
- PERIPHERAL_BUS_PCI,
- PERIPHERAL_BUS_RPI,
-- PERIPHERAL_BUS_CEC
-+ PERIPHERAL_BUS_CEC,
-+ PERIPHERAL_BUS_IMX
- };
-
- enum PeripheralFeature
-@@ -173,6 +174,8 @@ namespace PERIPHERALS
- return "pci";
- case PERIPHERAL_BUS_RPI:
- return "rpi";
-+ case PERIPHERAL_BUS_IMX:
-+ return "imx";
- case PERIPHERAL_BUS_CEC:
- return "cec";
- case PERIPHERAL_BUS_ADDON:
-@@ -197,6 +200,8 @@ namespace PERIPHERALS
- return PERIPHERAL_BUS_PCI;
- else if (strTypeLowerCase == "rpi")
- return PERIPHERAL_BUS_RPI;
-+ else if (strTypeLowerCase == "imx")
-+ return PERIPHERAL_BUS_IMX;
- else if (strTypeLowerCase == "cec")
- return PERIPHERAL_BUS_CEC;
- else if (strTypeLowerCase == "addon")
-diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-index b04fe00..abd0a6b 100644
---- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-+++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-@@ -102,6 +102,12 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results)
- /** the Pi's adapter cannot be removed, no need to rescan */
- m_bNeedsPolling = false;
- break;
-+#if defined(HAS_IMXVPU)
-+ case ADAPTERTYPE_IMX:
-+ result.m_mappedBusType = PERIPHERAL_BUS_IMX;
-+ m_bNeedsPolling = false;
-+ break;
-+#endif
- default:
- break;
- }
-
-From cfcfb4c98cf1a6d756fc3962e6d803c297917684 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:10:07 +0100
-Subject: [PATCH 4/4] [cec] added: setting to make libCEC wake up the AVR
- explicitly when activating the source.
-
-ref: https://github.com/Pulse-Eight/libcec/issues/156
----
- addons/resource.language.en_gb/resources/strings.po | 7 ++++++-
- system/peripherals.xml | 3 ++-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 1 +
- 3 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 1fa31e1..ed707b6 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36044|36046" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-@@ -24,6 +24,7 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-+ <setting key="power_avr_on_as" type="bool" label="36045" value="0" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index 1b7c38e..d032ffd 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -1384,6 +1384,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
- m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
- m_bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_configuration.bAutoWakeAVR = GetSettingBool("power_avr_on_as") ? 1 : 0;
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
diff --git a/abs/extra/kodi/9703.patch b/abs/extra/kodi/9703.patch
deleted file mode 100644
index 9c96dfa..0000000
--- a/abs/extra/kodi/9703.patch
+++ /dev/null
@@ -1,1432 +0,0 @@
-From 8f82e51563f0e1bc9b7a8adf669ad2b66e7ce3e5 Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Thu, 28 Apr 2016 17:17:40 +0200
-Subject: [PATCH] lib/cximage-6.0: fix compilation with gcc6
-
-For a quick fix I renamed min() to cxmin() and max() to cxmax() to
-prevent the conflict with the gcc definition.
-
-Forum thread for reference:
-http://forum.kodi.tv/showthread.php?tid=263884
----
- lib/cximage-6.0/CxImage/ximabmp.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximadef.h | 8 +-
- lib/cximage-6.0/CxImage/ximadsp.cpp | 182 +++++++++++++++++------------------
- lib/cximage-6.0/CxImage/ximage.cpp | 4 +-
- lib/cximage-6.0/CxImage/ximagif.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximahist.cpp | 12 +--
- lib/cximage-6.0/CxImage/ximaint.cpp | 8 +-
- lib/cximage-6.0/CxImage/ximaiter.h | 4 +-
- lib/cximage-6.0/CxImage/ximajbg.cpp | 2 +-
- lib/cximage-6.0/CxImage/ximapal.cpp | 14 +--
- lib/cximage-6.0/CxImage/ximapng.cpp | 12 +--
- lib/cximage-6.0/CxImage/ximaraw.cpp | 4 +-
- lib/cximage-6.0/CxImage/ximasel.cpp | 50 +++++-----
- lib/cximage-6.0/CxImage/ximath.cpp | 8 +-
- lib/cximage-6.0/CxImage/ximatif.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximatran.cpp | 138 +++++++++++++-------------
- lib/cximage-6.0/CxImage/ximawnd.cpp | 16 +--
- 17 files changed, 236 insertions(+), 244 deletions(-)
-
-diff --git a/lib/cximage-6.0/CxImage/ximabmp.cpp b/lib/cximage-6.0/CxImage/ximabmp.cpp
-index 726ff91..55842b1 100644
---- a/lib/cximage-6.0/CxImage/ximabmp.cpp
-+++ b/lib/cximage-6.0/CxImage/ximabmp.cpp
-@@ -46,7 +46,7 @@ bool CxImageBMP::Encode(CxFile * hFile)
- bihtoh(&infohdr);
-
- // Write the file header
-- hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1);
-+ hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1);
- hFile->Write(&infohdr,sizeof(BITMAPINFOHEADER),1);
- //and DIB+ALPHA interlaced
- BYTE *srcalpha = AlphaGetPointer();
-@@ -64,7 +64,7 @@ bool CxImageBMP::Encode(CxFile * hFile)
- #endif //CXIMAGE_SUPPORT_ALPHA
- {
- // Write the file header
-- hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1);
-+ hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1);
- //copy attributes
- memcpy(pDib,&head,sizeof(BITMAPINFOHEADER));
- bihtoh((BITMAPINFOHEADER*)pDib);
-@@ -86,7 +86,7 @@ bool CxImageBMP::Decode(CxFile * hFile)
- BITMAPFILEHEADER bf;
- DWORD off = hFile->Tell(); //<CSC>
- cx_try {
-- if (hFile->Read(&bf,min(14,sizeof(bf)),1)==0) cx_throw("Not a BMP");
-+ if (hFile->Read(&bf,cxmin(14,sizeof(bf)),1)==0) cx_throw("Not a BMP");
-
- bf.bfSize = my_ntohl(bf.bfSize);
- bf.bfOffBits = my_ntohl(bf.bfOffBits);
-diff --git a/lib/cximage-6.0/CxImage/ximadef.h b/lib/cximage-6.0/CxImage/ximadef.h
-index fe383bf..53ea452 100644
---- a/lib/cximage-6.0/CxImage/ximadef.h
-+++ b/lib/cximage-6.0/CxImage/ximadef.h
-@@ -53,12 +53,8 @@
- #define CXIMAGE_SUPPORT_WINDOWS 0
- #endif
-
--#ifndef min
--#define min(a,b) (((a)<(b))?(a):(b))
--#endif
--#ifndef max
--#define max(a,b) (((a)>(b))?(a):(b))
--#endif
-+#define cxmin(a,b) (((a)<(b))?(a):(b))
-+#define cxmax(a,b) (((a)>(b))?(a):(b))
-
- #ifndef PI
- #define PI 3.141592653589793f
-diff --git a/lib/cximage-6.0/CxImage/ximadsp.cpp b/lib/cximage-6.0/CxImage/ximadsp.cpp
-index 8425bb2..813253b 100644
---- a/lib/cximage-6.0/CxImage/ximadsp.cpp
-+++ b/lib/cximage-6.0/CxImage/ximadsp.cpp
-@@ -389,8 +389,8 @@ RGBQUAD CxImage::RGBtoHSL(RGBQUAD lRGBColor)
- G = lRGBColor.rgbGreen;
- B = lRGBColor.rgbBlue;
-
-- cMax = max( max(R,G), B); /* calculate lightness */
-- cMin = min( min(R,G), B);
-+ cMax = cxmax( cxmax(R,G), B); /* calculate lightness */
-+ cMin = cxmin( cxmin(R,G), B);
- L = (BYTE)((((cMax+cMin)*HSLMAX)+RGBMAX)/(2*RGBMAX));
-
- if (cMax==cMin){ /* r=g=b --> achromatic case */
-@@ -489,9 +489,9 @@ RGBQUAD CxImage::YUVtoRGB(RGBQUAD lYUVColor)
- G = (int)( Y - 0.344f * U - 0.714f * V);
- B = (int)( Y + 1.770f * U);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -510,9 +510,9 @@ RGBQUAD CxImage::RGBtoYUV(RGBQUAD lRGBColor)
- U = (int)((B-Y) * 0.565f + 128);
- V = (int)((R-Y) * 0.713f + 128);
-
-- Y= min(255,max(0,Y));
-- U= min(255,max(0,U));
-- V= min(255,max(0,V));
-+ Y= cxmin(255,cxmax(0,Y));
-+ U= cxmin(255,cxmax(0,U));
-+ V= cxmin(255,cxmax(0,V));
- RGBQUAD yuv={(BYTE)V,(BYTE)U,(BYTE)Y,0};
- return yuv;
- }
-@@ -528,9 +528,9 @@ RGBQUAD CxImage::YIQtoRGB(RGBQUAD lYIQColor)
- G = (int)( Y - 0.273f * I - 0.647f * Q);
- B = (int)( Y - 1.104f * I + 1.701f * Q);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -546,9 +546,9 @@ RGBQUAD CxImage::RGBtoYIQ(RGBQUAD lRGBColor)
- I = (int)( 0.5960f * R - 0.2742f * G - 0.3219f * B + 128);
- Q = (int)( 0.2109f * R - 0.5229f * G + 0.3120f * B + 128);
-
-- Y= min(255,max(0,Y));
-- I= min(255,max(0,I));
-- Q= min(255,max(0,Q));
-+ Y= cxmin(255,cxmax(0,Y));
-+ I= cxmin(255,cxmax(0,I));
-+ Q= cxmin(255,cxmax(0,Q));
- RGBQUAD yiq={(BYTE)Q,(BYTE)I,(BYTE)Y,0};
- return yiq;
- }
-@@ -565,9 +565,9 @@ RGBQUAD CxImage::XYZtoRGB(RGBQUAD lXYZColor)
- G = (int)( -0.969256f * X + 1.875992f * Y + 0.041556f * Z * k);
- B = (int)( 0.055648f * X - 0.204043f * Y + 1.057311f * Z * k);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -583,9 +583,9 @@ RGBQUAD CxImage::RGBtoXYZ(RGBQUAD lRGBColor)
- Y = (int)( 0.212671f * R + 0.715160f * G + 0.072169f * B);
- Z = (int)((0.019334f * R + 0.119193f * G + 0.950227f * B)*0.918483657f);
-
-- //X= min(255,max(0,X));
-- //Y= min(255,max(0,Y));
-- //Z= min(255,max(0,Z));
-+ //X= cxmin(255,cxmax(0,X));
-+ //Y= cxmin(255,cxmax(0,Y));
-+ //Z= cxmin(255,cxmax(0,Z));
- RGBQUAD xyz={(BYTE)Z,(BYTE)Y,(BYTE)X,0};
- return xyz;
- }
-@@ -707,7 +707,7 @@ bool CxImage::Light(long brightness, long contrast)
-
- BYTE cTable[256]; //<nipper>
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)((i-128)*c + brightness + 0.5f)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)((i-128)*c + brightness + 0.5f)));
- }
-
- return Lut(cTable);
-@@ -830,11 +830,11 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset)
- }
- }
- if (Kfactor==0 || ksumcur==0){
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset)));
- } else if (ksumtot == ksumcur) {
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset)));
- } else {
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
- }
- }
- }
-@@ -863,17 +863,17 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset)
- }
- }
- if (Kfactor==0 || ksumcur==0){
-- c.rgbRed = (BYTE)min(255, max(0,(int)(r + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)(g + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)(b + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset)));
- } else if (ksumtot == ksumcur) {
-- c.rgbRed = (BYTE)min(255, max(0,(int)(r/Kfactor + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)(g/Kfactor + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r/Kfactor + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g/Kfactor + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset)));
- } else {
-- c.rgbRed = (BYTE)min(255, max(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
- }
- tmp.BlindSetPixelColor(x,y,c);
- }
-@@ -1078,8 +1078,8 @@ bool CxImage::Edge(long Ksize)
- //
- void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffset, bool bMixAlpha)
- {
-- long lWide = min(GetWidth(),imgsrc2.GetWidth()-lXOffset);
-- long lHeight = min(GetHeight(),imgsrc2.GetHeight()-lYOffset);
-+ long lWide = cxmin(GetWidth(),imgsrc2.GetWidth()-lXOffset);
-+ long lHeight = cxmin(GetHeight(),imgsrc2.GetHeight()-lYOffset);
-
- bool bEditAlpha = imgsrc2.AlphaIsValid() & bMixAlpha;
-
-@@ -1112,16 +1112,16 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse
- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)((rgb1.rgbReserved+rgb2.rgbReserved)/2);
- break;
- case OpAdd:
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue+rgb2.rgbBlue));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen+rgb2.rgbGreen));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed+rgb2.rgbRed));
-- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved+rgb2.rgbReserved));
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue+rgb2.rgbBlue));
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen+rgb2.rgbGreen));
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed+rgb2.rgbRed));
-+ if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved+rgb2.rgbReserved));
- break;
- case OpSub:
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue-rgb2.rgbBlue));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen-rgb2.rgbGreen));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed-rgb2.rgbRed));
-- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved-rgb2.rgbReserved));
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue-rgb2.rgbBlue));
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen-rgb2.rgbGreen));
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed-rgb2.rgbRed));
-+ if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved-rgb2.rgbReserved));
- break;
- case OpAnd:
- rgbDest.rgbBlue = (BYTE)(rgb1.rgbBlue&rgb2.rgbBlue);
-@@ -1202,11 +1202,11 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse
- double dSmallAmt = dSmall*((double)rgb2.rgbBlue);
-
- if( lAverage < lThresh+1){
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbBlue) +
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbBlue) +
- dSmallAmt)));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbGreen) +
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbGreen) +
- dSmallAmt)));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbRed) +
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbRed) +
- dSmallAmt)));
- }
- else
-@@ -1274,9 +1274,9 @@ bool CxImage::ShiftRGB(long r, long g, long b)
- #endif //CXIMAGE_SUPPORT_SELECTION
- {
- color = BlindGetPixelColor(x,y);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + r)));
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + g)));
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + b)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + r)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + g)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + b)));
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -1284,9 +1284,9 @@ bool CxImage::ShiftRGB(long r, long g, long b)
- } else {
- for(DWORD j=0; j<head.biClrUsed; j++){
- color = GetPaletteColor((BYTE)j);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + r)));
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + g)));
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + b)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + r)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + g)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + b)));
- SetPaletteColor((BYTE)j,color);
- }
- }
-@@ -1310,7 +1310,7 @@ bool CxImage::Gamma(float gamma)
-
- BYTE cTable[256]; //<nipper>
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- return Lut(cTable);
-@@ -1337,21 +1337,21 @@ bool CxImage::GammaRGB(float gammaR, float gammaG, float gammaB)
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableR[256];
- for (i=0;i<256;i++) {
-- cTableR[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableR[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- dinvgamma = 1/gammaG;
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableG[256];
- for (i=0;i<256;i++) {
-- cTableG[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableG[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- dinvgamma = 1/gammaB;
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableB[256];
- for (i=0;i<256;i++) {
-- cTableB[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableB[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- return Lut(cTableR, cTableG, cTableB);
-@@ -1442,11 +1442,11 @@ bool CxImage::Noise(long level)
- {
- color = BlindGetPixelColor(x,y);
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + n)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + n)));
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + n)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + n)));
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + n)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + n)));
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -1561,8 +1561,8 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
-
- //DFT buffers
- double *real2,*imag2;
-- real2 = (double*)malloc(max(w,h) * sizeof(double));
-- imag2 = (double*)malloc(max(w,h) * sizeof(double));
-+ real2 = (double*)malloc(cxmax(w,h) * sizeof(double));
-+ imag2 = (double*)malloc(cxmax(w,h) * sizeof(double));
-
- /* Transform the rows */
- real = (double *)malloc(w * sizeof(double));
-@@ -1617,7 +1617,7 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
-
- /* converting from double to byte, there is a HUGE loss in the dynamics
- "nn" tries to keep an acceptable SNR, but 8bit=48dB: don't ask more */
-- double nn=pow((double)2,(double)log((double)max(w,h))/(double)log((double)2)-4);
-+ double nn=pow((double)2,(double)log((double)cxmax(w,h))/(double)log((double)2)-4);
- //reversed gain for reversed transform
- if (direction==-1) nn=1/nn;
- //bMagnitude : just to see it on the screen
-@@ -1626,15 +1626,15 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
- for (j=0;j<h;j++) {
- for (k=0;k<w;k++) {
- if (bMagnitude){
-- tmpReal->SetPixelIndex(k,j,(BYTE)max(0,min(255,(nn*(3+log(_cabs(grid[k][j])))))));
-+ tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(nn*(3+log(_cabs(grid[k][j])))))));
- if (grid[k][j].x==0){
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/0.0000000001)*nn)))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/0.0000000001)*nn)))));
- } else {
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn)))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn)))));
- }
- } else {
-- tmpReal->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].x*nn))));
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].y*nn))));
-+ tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].x*nn))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].y*nn))));
- }
- }
- }
-@@ -1922,7 +1922,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
-
-@@ -1943,7 +1943,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
- for (x=0;x<=w;x+=w){
-@@ -1963,7 +1963,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
-
-@@ -2621,8 +2621,8 @@ bool CxImage::SelectiveBlur(float radius, BYTE threshold, CxImage* iDst)
- }
-
- //build the difference mask
-- BYTE thresh_dw = (BYTE)max( 0 ,(int)(128 - threshold));
-- BYTE thresh_up = (BYTE)min(255,(int)(128 + threshold));
-+ BYTE thresh_dw = (BYTE)cxmax( 0 ,(int)(128 - threshold));
-+ BYTE thresh_up = (BYTE)cxmin(255,(int)(128 + threshold));
- long kernel[]={-100,-100,-100,-100,801,-100,-100,-100,-100};
- if (!Tmp.Filter(kernel,3,800,128)){
- delete [] pPalette;
-@@ -2755,7 +2755,7 @@ bool CxImage::UnsharpMask(float radius /*= 5.0*/, float amount /*= 0.5*/, int th
- if (abs(diff) < threshold){
- dest_row[z] = cur_row[z];
- } else {
-- dest_row[z] = (BYTE)min(255, max(0,(int)(cur_row[z] + amount * diff)));
-+ dest_row[z] = (BYTE)cxmin(255, cxmax(0,(int)(cur_row[z] + amount * diff)));
- }
- }
- }
-@@ -2952,7 +2952,7 @@ bool CxImage::RedEyeRemove(float strength)
- float a = 1.0f-5.0f*((float)((x-0.5f*(xmax+xmin))*(x-0.5f*(xmax+xmin))+(y-0.5f*(ymax+ymin))*(y-0.5f*(ymax+ymin))))/((float)((xmax-xmin)*(ymax-ymin)));
- if (a<0) a=0;
- color = BlindGetPixelColor(x,y);
-- color.rgbRed = (BYTE)(a*min(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed);
-+ color.rgbRed = (BYTE)(a*cxmin(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed);
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -2990,7 +2990,7 @@ bool CxImage::Saturate(const long saturation, const long colorspace)
- case 1:
- {
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)(i + saturation)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)(i + saturation)));
- }
- for(long y=ymin; y<ymax; y++){
- info.nProgress = (long)(100*(y-ymin)/(ymax-ymin));
-@@ -3012,7 +3012,7 @@ bool CxImage::Saturate(const long saturation, const long colorspace)
- case 2:
- {
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)((i-128)*(100 + saturation)/100.0f + 128.5f)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)((i-128)*(100 + saturation)/100.0f + 128.5f)));
- }
- for(long y=ymin; y<ymax; y++){
- info.nProgress = (long)(100*(y-ymin)/(ymax-ymin));
-@@ -3242,10 +3242,10 @@ int CxImage::OptimalThreshold(long method, RECT * pBox, CxImage* pContrastMask)
-
- long xmin,xmax,ymin,ymax;
- if (pBox){
-- xmin = max(pBox->left,0);
-- xmax = min(pBox->right,head.biWidth);
-- ymin = max(pBox->bottom,0);
-- ymax = min(pBox->top,head.biHeight);
-+ xmin = cxmax(pBox->left,0);
-+ xmax = cxmin(pBox->right,head.biWidth);
-+ ymin = cxmax(pBox->bottom,0);
-+ ymax = cxmin(pBox->top,head.biHeight);
- } else {
- xmin = ymin = 0;
- xmax = head.biWidth; ymax=head.biHeight;
-@@ -3463,7 +3463,7 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa
- r.top = r.bottom + nBoxSize;
- int threshold = OptimalThreshold(method, &r, pContrastMask);
- if (threshold <0) return false;
-- mask.SetPixelIndex(x,y,(BYTE)max(0,min(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold))));
-+ mask.SetPixelIndex(x,y,(BYTE)cxmax(0,cxmin(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold))));
- }
- }
-
-@@ -3490,10 +3490,6 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa
- * Note: nOpacity=0 && bSelectFilledArea=true act as a "magic wand"
- * \return true if everything is ok
- */
--#if defined(XBMC) && !defined(_WIN32)
--int max(int a, int b) { return a > b ? a : b; }
--int min(int a, int b) { return a < b ? a : b; }
--#endif
-
- bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFillColor, const BYTE nTolerance,
- BYTE nOpacity, const bool bSelectFilledArea, const BYTE nSelectionLevel)
-@@ -3538,8 +3534,8 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil
- if (IsIndexed()){ //--- Generic indexed image, no tolerance OR Grayscale image with tolerance
- BYTE idxRef = GetPixelIndex(xStart,yStart);
- BYTE idxFill = GetNearestIndex(cFillColor);
-- BYTE idxMin = (BYTE)min(255, max(0,(int)(idxRef - nTolerance)));
-- BYTE idxMax = (BYTE)min(255, max(0,(int)(idxRef + nTolerance)));
-+ BYTE idxMin = (BYTE)cxmin(255, cxmax(0,(int)(idxRef - nTolerance)));
-+ BYTE idxMax = (BYTE)cxmin(255, cxmax(0,(int)(idxRef + nTolerance)));
-
- while(!q.empty())
- {
-@@ -3575,12 +3571,12 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil
- } else { //--- RGB image
- RGBQUAD cRef = GetPixelColor(xStart,yStart);
- RGBQUAD cRefMin, cRefMax;
-- cRefMin.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed - nTolerance)));
-- cRefMin.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen - nTolerance)));
-- cRefMin.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue - nTolerance)));
-- cRefMax.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed + nTolerance)));
-- cRefMax.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen + nTolerance)));
-- cRefMax.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue + nTolerance)));
-+ cRefMin.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed - nTolerance)));
-+ cRefMin.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen - nTolerance)));
-+ cRefMin.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue - nTolerance)));
-+ cRefMax.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed + nTolerance)));
-+ cRefMax.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen + nTolerance)));
-+ cRefMax.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue + nTolerance)));
-
- while(!q.empty())
- {
-diff --git a/lib/cximage-6.0/CxImage/ximage.cpp b/lib/cximage-6.0/CxImage/ximage.cpp
-index e81d3c6..26c6993 100644
---- a/lib/cximage-6.0/CxImage/ximage.cpp
-+++ b/lib/cximage-6.0/CxImage/ximage.cpp
-@@ -460,7 +460,7 @@ bool CxImage::CreateFromArray(BYTE* pArray,DWORD dwWidth,DWORD dwHeight,DWORD dw
- src+=4;
- }
- } else {
-- memcpy(dst,src,min(info.dwEffWidth,dwBytesperline));
-+ memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline));
- }
- }
- return true;
-@@ -500,7 +500,7 @@ bool CxImage::CreateFromMatrix(BYTE** ppMatrix,DWORD dwWidth,DWORD dwHeight,DWOR
- src+=4;
- }
- } else {
-- memcpy(dst,src,min(info.dwEffWidth,dwBytesperline));
-+ memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline));
- }
- }
- }
-diff --git a/lib/cximage-6.0/CxImage/ximagif.cpp b/lib/cximage-6.0/CxImage/ximagif.cpp
-index b89e061..64b1ccc 100644
---- a/lib/cximage-6.0/CxImage/ximagif.cpp
-+++ b/lib/cximage-6.0/CxImage/ximagif.cpp
-@@ -478,7 +478,7 @@ bool CxImageGIF::Encode(CxFile * fp, CxImage ** pImages, int pagecount, bool bLo
- ghost.EncodeHeader(fp);
-
- if (m_loops!=1){
-- ghost.SetLoops(max(0,m_loops-1));
-+ ghost.SetLoops(cxmax(0,m_loops-1));
- ghost.EncodeLoopExtension(fp);
- }
-
-@@ -1340,10 +1340,10 @@ void CxImageGIF::GetComment(char* sz_comment_out)
- ////////////////////////////////////////////////////////////////////////////////
- void CxImageGIF::GifMix(CxImage & imgsrc2, struct_image & imgdesc)
- {
-- long ymin = max(0,(long)(GetHeight()-imgdesc.t - imgdesc.h));
-+ long ymin = cxmax(0,(long)(GetHeight()-imgdesc.t - imgdesc.h));
- long ymax = GetHeight()-imgdesc.t;
- long xmin = imgdesc.l;
-- long xmax = min(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w));
-+ long xmax = cxmin(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w));
-
- long ibg2= imgsrc2.GetTransIndex();
- BYTE i2;
-diff --git a/lib/cximage-6.0/CxImage/ximahist.cpp b/lib/cximage-6.0/CxImage/ximahist.cpp
-index a2aed03..5391107 100644
---- a/lib/cximage-6.0/CxImage/ximahist.cpp
-+++ b/lib/cximage-6.0/CxImage/ximahist.cpp
-@@ -110,7 +110,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- for (y=0; y<head.biHeight; y++) {
-@@ -152,7 +152,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- // normalize image
-@@ -225,7 +225,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- BYTE range = maxR - minR;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutR[x] = (BYTE)max(0,min(255,(255 * (x - minR) / range)));
-+ lutR[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minR) / range)));
- }
- } else lutR[minR] = minR;
-
-@@ -233,7 +233,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- range = maxG - minG;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutG[x] = (BYTE)max(0,min(255,(255 * (x - minG) / range)));
-+ lutG[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minG) / range)));
- }
- } else lutG[minG] = minG;
-
-@@ -241,7 +241,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- range = maxB - minB;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutB[x] = (BYTE)max(0,min(255,(255 * (x - minB) / range)));
-+ lutB[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minB) / range)));
- }
- } else lutB[minB] = minB;
-
-@@ -292,7 +292,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- for(y=0; y<head.biHeight; y++){
-diff --git a/lib/cximage-6.0/CxImage/ximaint.cpp b/lib/cximage-6.0/CxImage/ximaint.cpp
-index 989d76c..5d49213 100644
---- a/lib/cximage-6.0/CxImage/ximaint.cpp
-+++ b/lib/cximage-6.0/CxImage/ximaint.cpp
-@@ -26,8 +26,8 @@ void CxImage::OverflowCoordinates(long &x, long &y, OverflowMethod const ofMetho
- switch (ofMethod) {
- case OM_REPEAT:
- //clip coordinates
-- x=max(x,0); x=min(x, head.biWidth-1);
-- y=max(y,0); y=min(y, head.biHeight-1);
-+ x=cxmax(x,0); x=cxmin(x, head.biWidth-1);
-+ y=cxmax(y,0); y=cxmin(y, head.biHeight-1);
- break;
- case OM_WRAP:
- //wrap coordinates
-@@ -59,8 +59,8 @@ void CxImage::OverflowCoordinates(float &x, float &y, OverflowMethod const ofMet
- switch (ofMethod) {
- case OM_REPEAT:
- //clip coordinates
-- x=max(x,0); x=min(x, head.biWidth-1);
-- y=max(y,0); y=min(y, head.biHeight-1);
-+ x=cxmax(x,0); x=cxmin(x, head.biWidth-1);
-+ y=cxmax(y,0); y=cxmin(y, head.biHeight-1);
- break;
- case OM_WRAP:
- //wrap coordinates
-diff --git a/lib/cximage-6.0/CxImage/ximaiter.h b/lib/cximage-6.0/CxImage/ximaiter.h
-index 9788919..01a720b 100644
---- a/lib/cximage-6.0/CxImage/ximaiter.h
-+++ b/lib/cximage-6.0/CxImage/ximaiter.h
-@@ -140,7 +140,7 @@ inline void CImageIterator::SetY(int y)
- inline void CImageIterator::SetRow(BYTE *buf, int n)
- {
- if (n<0) n = (int)ima->GetEffWidth();
-- else n = min(n,(int)ima->GetEffWidth());
-+ else n = cxmin(n,(int)ima->GetEffWidth());
-
- if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0)) memcpy(IterImage,buf,n);
- }
-@@ -148,7 +148,7 @@ inline void CImageIterator::SetRow(BYTE *buf, int n)
- inline void CImageIterator::GetRow(BYTE *buf, int n)
- {
- if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0))
-- memcpy(buf,IterImage,min(n,(int)ima->GetEffWidth()));
-+ memcpy(buf,IterImage,cxmin(n,(int)ima->GetEffWidth()));
- }
- /////////////////////////////////////////////////////////////////////
- inline BYTE* CImageIterator::GetRow()
-diff --git a/lib/cximage-6.0/CxImage/ximajbg.cpp b/lib/cximage-6.0/CxImage/ximajbg.cpp
-index 06fb9bf..8a01e28 100644
---- a/lib/cximage-6.0/CxImage/ximajbg.cpp
-+++ b/lib/cximage-6.0/CxImage/ximajbg.cpp
-@@ -145,7 +145,7 @@ bool CxImageJBG::Encode(CxFile * hFile)
- jbg_enc_init(&jbig_state, w, h, planes, &buffer, jbig_data_out, hFile);
-
- //jbg_enc_layers(&jbig_state, 2);
-- //jbg_enc_lrlmax(&jbig_state, 800, 600);
-+ //jbg_enc_lrlcxmax(&jbig_state, 800, 600);
-
- // Specify a few other options (each is ignored if negative)
- int dl = -1, dh = -1, d = -1, l0 = -1, mx = -1;
-diff --git a/lib/cximage-6.0/CxImage/ximapal.cpp b/lib/cximage-6.0/CxImage/ximapal.cpp
-index b3bd3da..3788c98 100644
---- a/lib/cximage-6.0/CxImage/ximapal.cpp
-+++ b/lib/cximage-6.0/CxImage/ximapal.cpp
-@@ -398,8 +398,8 @@ void CxImage::RGBtoBGR(BYTE *buffer, int length)
- {
- if (buffer && (head.biClrUsed==0)){
- BYTE temp;
-- length = min(length,(int)info.dwEffWidth);
-- length = min(length,(int)(3*head.biWidth));
-+ length = cxmin(length,(int)info.dwEffWidth);
-+ length = cxmin(length,(int)(3*head.biWidth));
- for (int i=0;i<length;i+=3){
- temp = buffer[i]; buffer[i] = buffer[i+2]; buffer[i+2] = temp;
- }
-@@ -444,7 +444,7 @@ void CxImage::SetPalette(DWORD n, BYTE *r, BYTE *g, BYTE *b)
- if (!g) g = r;
- if (!b) b = g;
- RGBQUAD* ppal=GetPalette();
-- DWORD m=min(n,head.biClrUsed);
-+ DWORD m=cxmin(n,head.biClrUsed);
- for (DWORD i=0; i<m;i++){
- ppal[i].rgbRed=r[i];
- ppal[i].rgbGreen=g[i];
-@@ -457,7 +457,7 @@ void CxImage::SetPalette(rgb_color *rgb,DWORD nColors)
- {
- if ((!rgb)||(pDib==NULL)||(head.biClrUsed==0)) return;
- RGBQUAD* ppal=GetPalette();
-- DWORD m=min(nColors,head.biClrUsed);
-+ DWORD m=cxmin(nColors,head.biClrUsed);
- for (DWORD i=0; i<m;i++){
- ppal[i].rgbRed=rgb[i].r;
- ppal[i].rgbGreen=rgb[i].g;
-@@ -469,7 +469,7 @@ void CxImage::SetPalette(rgb_color *rgb,DWORD nColors)
- void CxImage::SetPalette(RGBQUAD* pPal,DWORD nColors)
- {
- if ((pPal==NULL)||(pDib==NULL)||(head.biClrUsed==0)) return;
-- memcpy(GetPalette(),pPal,min(GetPaletteSize(),nColors*sizeof(RGBQUAD)));
-+ memcpy(GetPalette(),pPal,cxmin(GetPaletteSize(),nColors*sizeof(RGBQUAD)));
- info.last_c_isvalid = false;
- }
- ////////////////////////////////////////////////////////////////////////////////
-@@ -654,10 +654,10 @@ void CxImage::SetClrImportant(DWORD ncolors)
-
- switch(head.biBitCount){
- case 1:
-- head.biClrImportant = min(ncolors,2);
-+ head.biClrImportant = cxmin(ncolors,2);
- break;
- case 4:
-- head.biClrImportant = min(ncolors,16);
-+ head.biClrImportant = cxmin(ncolors,16);
- break;
- case 8:
- head.biClrImportant = ncolors;
-diff --git a/lib/cximage-6.0/CxImage/ximapng.cpp b/lib/cximage-6.0/CxImage/ximapng.cpp
-index a58441c..4b5cc50 100644
---- a/lib/cximage-6.0/CxImage/ximapng.cpp
-+++ b/lib/cximage-6.0/CxImage/ximapng.cpp
-@@ -206,9 +206,9 @@ bool CxImagePNG::Decode(CxFile *hFile)
- } else SetGrayPalette(); //<DP> needed for grayscale PNGs
-
- #ifdef USE_NEW_LIBPNG_API
-- int nshift = max(0,(_bit_depth>>3)-1)<<3;
-+ int nshift = cxmax(0,(_bit_depth>>3)-1)<<3;
- #else
-- int nshift = max(0,(info_ptr->bit_depth>>3)-1)<<3;
-+ int nshift = cxmax(0,(info_ptr->bit_depth>>3)-1)<<3;
- #endif
-
- #ifdef USE_NEW_LIBPNG_API
-@@ -255,10 +255,10 @@ bool CxImagePNG::Decode(CxFile *hFile)
- if (pal){
- DWORD ip;
- #ifdef USE_NEW_LIBPNG_API
-- for (ip=0;ip<min(head.biClrUsed,(unsigned long)_num_trans);ip++)
-+ for (ip=0;ip<cxmin(head.biClrUsed,(unsigned long)_num_trans);ip++)
- pal[ip].rgbReserved=_trans_alpha[ip];
- #else
-- for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
-+ for (ip=0;ip<cxmin(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
- #if PNG_LIBPNG_VER > 10399
- pal[ip].rgbReserved=info_ptr->trans_alpha[ip];
- #else
-@@ -737,9 +737,9 @@ bool CxImagePNG::Encode(CxFile *hFile)
- #endif // CXIMAGE_SUPPORT_ALPHA // <vho>
-
- #ifdef USE_NEW_LIBPNG_API
-- int row_size = max(info.dwEffWidth, (_width * _channels * _bit_depth / 8));
-+ int row_size = cxmax(info.dwEffWidth, (_width * _channels * _bit_depth / 8));
- #else
-- int row_size = max(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8));
-+ int row_size = cxmax(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8));
- info_ptr->rowbytes = row_size;
- #endif
- BYTE *row_pointers = new BYTE[row_size];
-diff --git a/lib/cximage-6.0/CxImage/ximaraw.cpp b/lib/cximage-6.0/CxImage/ximaraw.cpp
-index fd86f96..52d964d 100644
---- a/lib/cximage-6.0/CxImage/ximaraw.cpp
-+++ b/lib/cximage-6.0/CxImage/ximaraw.cpp
-@@ -216,7 +216,7 @@ bool CxImageRAW::Decode(CxFile *hFile)
-
- DWORD size = dcr.width * (dcr.colors*dcr.opt.output_bps/8);
- RGBtoBGR(ppm,size);
-- memcpy(GetBits(dcr.height - 1 - row), ppm, min(size,GetEffWidth()));
-+ memcpy(GetBits(dcr.height - 1 - row), ppm, cxmin(size,GetEffWidth()));
- }
- free (ppm);
-
-@@ -298,7 +298,7 @@ bool CxImageRAW::GetExifThumbnail(const char *filename, const char *outname, int
- // Resizing.
- if (image.GetWidth() > 256 || image.GetHeight() > 256)
- {
-- float amount = 256.0f / max(image.GetWidth(), image.GetHeight());
-+ float amount = 256.0f / cxmax(image.GetWidth(), image.GetHeight());
- image.Resample((long)(image.GetWidth() * amount), (long)(image.GetHeight() * amount), 0);
- }
-
-diff --git a/lib/cximage-6.0/CxImage/ximasel.cpp b/lib/cximage-6.0/CxImage/ximasel.cpp
-index 3a7c9a1..37cd10f 100644
---- a/lib/cximage-6.0/CxImage/ximasel.cpp
-+++ b/lib/cximage-6.0/CxImage/ximasel.cpp
-@@ -113,15 +113,15 @@ bool CxImage::SelectionAddRect(RECT r, BYTE level)
- if (r.left<r.right) {r2.left=r.left; r2.right=r.right; } else {r2.left=r.right ; r2.right=r.left; }
- if (r.bottom<r.top) {r2.bottom=r.bottom; r2.top=r.top; } else {r2.bottom=r.top ; r2.top=r.bottom; }
-
-- if (info.rSelectionBox.top <= r2.top) info.rSelectionBox.top = max(0L,min(head.biHeight,r2.top+1));
-- if (info.rSelectionBox.left > r2.left) info.rSelectionBox.left = max(0L,min(head.biWidth,r2.left));
-- if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = max(0L,min(head.biWidth,r2.right+1));
-- if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = max(0L,min(head.biHeight,r2.bottom));
-+ if (info.rSelectionBox.top <= r2.top) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,r2.top+1));
-+ if (info.rSelectionBox.left > r2.left) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,r2.left));
-+ if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,r2.right+1));
-+ if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,r2.bottom));
-
-- long ymin = max(0L,min(head.biHeight,r2.bottom));
-- long ymax = max(0L,min(head.biHeight,r2.top+1));
-- long xmin = max(0L,min(head.biWidth,r2.left));
-- long xmax = max(0L,min(head.biWidth,r2.right+1));
-+ long ymin = cxmax(0L,cxmin(head.biHeight,r2.bottom));
-+ long ymax = cxmax(0L,cxmin(head.biHeight,r2.top+1));
-+ long xmin = cxmax(0L,cxmin(head.biWidth,r2.left));
-+ long xmax = cxmax(0L,cxmin(head.biWidth,r2.right+1));
-
- for (long y=ymin; y<ymax; y++)
- memset(pSelection + xmin + y * head.biWidth, level, xmax-xmin);
-@@ -144,18 +144,18 @@ bool CxImage::SelectionAddEllipse(RECT r, BYTE level)
- long xcenter = (r.right + r.left)/2;
- long ycenter = (r.top + r.bottom)/2;
-
-- if (info.rSelectionBox.left > (xcenter - xradius)) info.rSelectionBox.left = max(0L,min(head.biWidth,(xcenter - xradius)));
-- if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = max(0L,min(head.biWidth,(xcenter + xradius + 1)));
-- if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = max(0L,min(head.biHeight,(ycenter - yradius)));
-- if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = max(0L,min(head.biHeight,(ycenter + yradius + 1)));
-+ if (info.rSelectionBox.left > (xcenter - xradius)) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,(xcenter - xradius)));
-+ if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,(xcenter + xradius + 1)));
-+ if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,(ycenter - yradius)));
-+ if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,(ycenter + yradius + 1)));
-
-- long xmin = max(0L,min(head.biWidth,xcenter - xradius));
-- long xmax = max(0L,min(head.biWidth,xcenter + xradius + 1));
-- long ymin = max(0L,min(head.biHeight,ycenter - yradius));
-- long ymax = max(0L,min(head.biHeight,ycenter + yradius + 1));
-+ long xmin = cxmax(0L,cxmin(head.biWidth,xcenter - xradius));
-+ long xmax = cxmax(0L,cxmin(head.biWidth,xcenter + xradius + 1));
-+ long ymin = cxmax(0L,cxmin(head.biHeight,ycenter - yradius));
-+ long ymax = cxmax(0L,cxmin(head.biHeight,ycenter + yradius + 1));
-
- long y,yo;
-- for (y=ymin; y<min(ycenter,ymax); y++){
-+ for (y=ymin; y<cxmin(ycenter,ymax); y++){
- for (long x=xmin; x<xmax; x++){
- yo = (long)(ycenter - yradius * sqrt(1-pow((float)(x - xcenter)/(float)xradius,2)));
- if (yo<y) pSelection[x + y * head.biWidth] = level;
-@@ -268,10 +268,10 @@ bool CxImage::SelectionAddPolygon(POINT *points, long npoints, BYTE level)
- RECT r2;
- if (current->x < next->x) {r2.left=current->x; r2.right=next->x; } else {r2.left=next->x ; r2.right=current->x; }
- if (current->y < next->y) {r2.bottom=current->y; r2.top=next->y; } else {r2.bottom=next->y ; r2.top=current->y; }
-- if (localbox.top < r2.top) localbox.top = max(0L,min(head.biHeight-1,r2.top+1));
-- if (localbox.left > r2.left) localbox.left = max(0L,min(head.biWidth-1,r2.left-1));
-- if (localbox.right < r2.right) localbox.right = max(0L,min(head.biWidth-1,r2.right+1));
-- if (localbox.bottom > r2.bottom) localbox.bottom = max(0L,min(head.biHeight-1,r2.bottom-1));
-+ if (localbox.top < r2.top) localbox.top = cxmax(0L,cxmin(head.biHeight-1,r2.top+1));
-+ if (localbox.left > r2.left) localbox.left = cxmax(0L,cxmin(head.biWidth-1,r2.left-1));
-+ if (localbox.right < r2.right) localbox.right = cxmax(0L,cxmin(head.biWidth-1,r2.right+1));
-+ if (localbox.bottom > r2.bottom) localbox.bottom = cxmax(0L,cxmin(head.biHeight-1,r2.bottom-1));
-
- i++;
- }
-@@ -385,10 +385,10 @@ bool CxImage::SelectionAddPolygon(POINT *points, long npoints, BYTE level)
- for (x=localbox.left; x<=localbox.right; x++)
- if (plocal[x + yoffset]!=1) pSelection[x + yoffset]=level;
- }
-- if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = min(head.biHeight,localbox.top + 1);
-- if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = min(head.biWidth,localbox.left);
-- if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = min(head.biWidth,localbox.right + 1);
-- if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = min(head.biHeight,localbox.bottom);
-+ if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = cxmin(head.biHeight,localbox.top + 1);
-+ if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = cxmin(head.biWidth,localbox.left);
-+ if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = cxmin(head.biWidth,localbox.right + 1);
-+ if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = cxmin(head.biHeight,localbox.bottom);
-
- free(plocal);
- free(pix);
-diff --git a/lib/cximage-6.0/CxImage/ximath.cpp b/lib/cximage-6.0/CxImage/ximath.cpp
-index 37533e2..f84eb72 100644
---- a/lib/cximage-6.0/CxImage/ximath.cpp
-+++ b/lib/cximage-6.0/CxImage/ximath.cpp
-@@ -64,10 +64,10 @@ CxRect2 CxRect2::CrossSection(CxRect2 const &r2) const
- */
- {
- CxRect2 cs;
-- cs.botLeft.x=max(botLeft.x, r2.botLeft.x);
-- cs.botLeft.y=max(botLeft.y, r2.botLeft.y);
-- cs.topRight.x=min(topRight.x, r2.topRight.x);
-- cs.topRight.y=min(topRight.y, r2.topRight.y);
-+ cs.botLeft.x=cxmax(botLeft.x, r2.botLeft.x);
-+ cs.botLeft.y=cxmax(botLeft.y, r2.botLeft.y);
-+ cs.topRight.x=cxmin(topRight.x, r2.topRight.x);
-+ cs.topRight.y=cxmin(topRight.y, r2.topRight.y);
- if (cs.botLeft.x<=cs.topRight.x && cs.botLeft.y<=cs.topRight.y) {
- return cs;
- } else {
-diff --git a/lib/cximage-6.0/CxImage/ximatif.cpp b/lib/cximage-6.0/CxImage/ximatif.cpp
-index 658392a..002766c 100644
---- a/lib/cximage-6.0/CxImage/ximatif.cpp
-+++ b/lib/cximage-6.0/CxImage/ximatif.cpp
-@@ -470,9 +470,9 @@ bool CxImageTIF::Decode(CxFile * hFile)
- if ( cb > 0.00304 ) cb = 1.055 * pow(cb,0.41667) - 0.055;
- else cb = 12.92 * cb;
-
-- c.rgbRed =(BYTE)max(0,min(255,(int)(cr*255)));
-- c.rgbGreen=(BYTE)max(0,min(255,(int)(cg*255)));
-- c.rgbBlue =(BYTE)max(0,min(255,(int)(cb*255)));
-+ c.rgbRed =(BYTE)cxmax(0,cxmin(255,(int)(cr*255)));
-+ c.rgbGreen=(BYTE)cxmax(0,cxmin(255,(int)(cg*255)));
-+ c.rgbBlue =(BYTE)cxmax(0,cxmin(255,(int)(cb*255)));
-
- SetPixelColor(xi,yi,c);
- #if CXIMAGE_SUPPORT_ALPHA
-diff --git a/lib/cximage-6.0/CxImage/ximatran.cpp b/lib/cximage-6.0/CxImage/ximatran.cpp
-index 64a71e7..84d5e03 100644
---- a/lib/cximage-6.0/CxImage/ximatran.cpp
-+++ b/lib/cximage-6.0/CxImage/ximatran.cpp
-@@ -302,12 +302,12 @@ bool CxImage::RotateLeft(CxImage* iDst)
- for (ys = 0; ys < newHeight; ys+=RBLOCK) {
- if (head.biBitCount==24) {
- //RGB24 optimized pixel access:
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ //do rotation
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ //do rotation
- info.nProgress = (long)(100*x/newWidth);
- x2=newWidth-x-1;
- dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(x,ys);
- srcPtr = (BYTE*) BlindGetPixelPointer(ys, x2);
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- //imgDest.SetPixelColor(x, y, GetPixelColor(y, x2));
- *(dstPtr) = *(srcPtr);
- *(dstPtr+1) = *(srcPtr+1);
-@@ -318,19 +318,19 @@ bool CxImage::RotateLeft(CxImage* iDst)
- }//for x
- } else {
- //anything else than 24bpp (and 1bpp): palette
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- info.nProgress = (long)(100*x/newWidth); //<Anatoly Ivasyuk>
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y, x2));
- }//for y
- }//for x
- }//if (version selection)
- #if CXIMAGE_SUPPORT_ALPHA
- if (AlphaIsValid()) {
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.AlphaSet(x,y,BlindAlphaGet(y, x2));
- }//for y
- }//for x
-@@ -343,9 +343,9 @@ bool CxImage::RotateLeft(CxImage* iDst)
- imgDest.info.rSelectionBox.right = newWidth-info.rSelectionBox.bottom;
- imgDest.info.rSelectionBox.bottom = info.rSelectionBox.left;
- imgDest.info.rSelectionBox.top = info.rSelectionBox.right;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.SelectionSet(x,y,BlindSelectionGet(y, x2));
- }//for y
- }//for x
-@@ -447,12 +447,12 @@ bool CxImage::RotateRight(CxImage* iDst)
- for (ys = 0; ys < newHeight; ys+=RBLOCK) {
- if (head.biBitCount==24) {
- //RGB24 optimized pixel access:
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- info.nProgress = (long)(100*y/newHeight); //<Anatoly Ivasyuk>
- y2=newHeight-y-1;
- dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(xs,y);
- srcPtr = (BYTE*) BlindGetPixelPointer(y2, xs);
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- //imgDest.SetPixelColor(x, y, GetPixelColor(y2, x));
- *(dstPtr) = *(srcPtr);
- *(dstPtr+1) = *(srcPtr+1);
-@@ -463,19 +463,19 @@ bool CxImage::RotateRight(CxImage* iDst)
- }//for y
- } else {
- //anything else than BW & RGB24: palette
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- info.nProgress = (long)(100*y/newHeight); //<Anatoly Ivasyuk>
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y2, x));
- }//for x
- }//for y
- }//if
- #if CXIMAGE_SUPPORT_ALPHA
- if (AlphaIsValid()){
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.AlphaSet(x,y,BlindAlphaGet(y2, x));
- }//for x
- }//for y
-@@ -488,9 +488,9 @@ bool CxImage::RotateRight(CxImage* iDst)
- imgDest.info.rSelectionBox.right = info.rSelectionBox.top;
- imgDest.info.rSelectionBox.bottom = newHeight-info.rSelectionBox.right;
- imgDest.info.rSelectionBox.top = newHeight-info.rSelectionBox.left;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.SelectionSet(x,y,BlindSelectionGet(y2, x));
- }//for x
- }//for y
-@@ -608,10 +608,10 @@ bool CxImage::Rotate(float angle, CxImage* iDst)
- newP4.x = (float)(p4.x*cos_angle - p4.y*sin_angle);
- newP4.y = (float)(p4.x*sin_angle + p4.y*cos_angle);
-
-- leftTop.x = min(min(newP1.x,newP2.x),min(newP3.x,newP4.x));
-- leftTop.y = min(min(newP1.y,newP2.y),min(newP3.y,newP4.y));
-- rightBottom.x = max(max(newP1.x,newP2.x),max(newP3.x,newP4.x));
-- rightBottom.y = max(max(newP1.y,newP2.y),max(newP3.y,newP4.y));
-+ leftTop.x = cxmin(cxmin(newP1.x,newP2.x),cxmin(newP3.x,newP4.x));
-+ leftTop.y = cxmin(cxmin(newP1.y,newP2.y),cxmin(newP3.y,newP4.y));
-+ rightBottom.x = cxmax(cxmax(newP1.x,newP2.x),cxmax(newP3.x,newP4.x));
-+ rightBottom.y = cxmax(cxmax(newP1.y,newP2.y),cxmax(newP3.y,newP4.y));
- leftBottom.x = leftTop.x;
- leftBottom.y = rightBottom.y;
- rightTop.x = rightBottom.x;
-@@ -740,10 +740,10 @@ bool CxImage::Rotate2(float angle,
- }//if
-
- //(read new dimensions from location of corners)
-- float minx = (float) min(min(newp[0].x,newp[1].x),min(newp[2].x,newp[3].x));
-- float miny = (float) min(min(newp[0].y,newp[1].y),min(newp[2].y,newp[3].y));
-- float maxx = (float) max(max(newp[0].x,newp[1].x),max(newp[2].x,newp[3].x));
-- float maxy = (float) max(max(newp[0].y,newp[1].y),max(newp[2].y,newp[3].y));
-+ float minx = (float) cxmin(cxmin(newp[0].x,newp[1].x),cxmin(newp[2].x,newp[3].x));
-+ float miny = (float) cxmin(cxmin(newp[0].y,newp[1].y),cxmin(newp[2].y,newp[3].y));
-+ float maxx = (float) cxmax(cxmax(newp[0].x,newp[1].x),cxmax(newp[2].x,newp[3].x));
-+ float maxy = (float) cxmax(cxmax(newp[0].y,newp[1].y),cxmax(newp[2].y,newp[3].y));
- int newWidth = (int) floor(maxx-minx+0.5f);
- int newHeight= (int) floor(maxy-miny+0.5f);
- float ssx=((maxx+minx)- ((float) newWidth-1))/2.0f; //start for x
-@@ -1003,12 +1003,12 @@ bool CxImage::Resample(long newx, long newy, int mode, CxImage* iDst)
- if (info.nEscape) break;
- fY = y * yScale;
- ifY = (int)fY;
-- ifY1 = min(ymax, ifY+1);
-+ ifY1 = cxmin(ymax, ifY+1);
- dy = fY - ifY;
- for(long x=0; x<newx; x++){
- fX = x * xScale;
- ifX = (int)fX;
-- ifX1 = min(xmax, ifX+1);
-+ ifX1 = cxmin(xmax, ifX+1);
- dx = fX - ifX;
- // Interpolate using the four nearest pixels in the source
- if (head.biClrUsed){
-@@ -1328,9 +1328,9 @@ bool CxImage::DecreaseBpp(DWORD nbit, bool errordiffusion, RGBQUAD* ppal, DWORD
- eb=(long)c.rgbBlue - (long)ce.rgbBlue;
-
- c = GetPixelColor(x+1,y);
-- c.rgbRed = (BYTE)min(255L,max(0L,(long)c.rgbRed + ((er*7)/16)));
-- c.rgbGreen = (BYTE)min(255L,max(0L,(long)c.rgbGreen + ((eg*7)/16)));
-- c.rgbBlue = (BYTE)min(255L,max(0L,(long)c.rgbBlue + ((eb*7)/16)));
-+ c.rgbRed = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbRed + ((er*7)/16)));
-+ c.rgbGreen = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbGreen + ((eg*7)/16)));
-+ c.rgbBlue = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbBlue + ((eb*7)/16)));
- SetPixelColor(x+1,y,c);
- int coeff=1;
- for(int i=-1; i<2; i++){
-@@ -1343,9 +1343,9 @@ bool CxImage::DecreaseBpp(DWORD nbit, bool errordiffusion, RGBQUAD* ppal, DWORD
- coeff=1; break;
- }
- c = GetPixelColor(x+i,y+1);
-- c.rgbRed = (BYTE)min(255L,max(0L,(long)c.rgbRed + ((er * coeff)/16)));
-- c.rgbGreen = (BYTE)min(255L,max(0L,(long)c.rgbGreen + ((eg * coeff)/16)));
-- c.rgbBlue = (BYTE)min(255L,max(0L,(long)c.rgbBlue + ((eb * coeff)/16)));
-+ c.rgbRed = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbRed + ((er * coeff)/16)));
-+ c.rgbGreen = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbGreen + ((eg * coeff)/16)));
-+ c.rgbBlue = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbBlue + ((eb * coeff)/16)));
- SetPixelColor(x+i,y+1,c);
- }
- }
-@@ -1566,10 +1566,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 8) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 4) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1591,7 +1591,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- }
-@@ -1620,10 +1620,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 8) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 4) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1645,7 +1645,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -2; i < 3; i++) {
-@@ -1667,7 +1667,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1696,10 +1696,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 7) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 5) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1721,7 +1721,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -2; i < 3; i++) {
-@@ -1743,7 +1743,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1772,10 +1772,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 5) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 3) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1797,7 +1797,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -1; i < 2; i++) {
-@@ -1813,7 +1813,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1845,76 +1845,76 @@ bool CxImage::Dither(long method)
- int tmp_index_y = y;
- int tmp_coeff = 32;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 3;
- tmp_index_y = y + 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 1;
- tmp_coeff = 26;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 1;
- tmp_coeff = 30;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 3;
- tmp_coeff = 16;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 2;
- tmp_index_y = y + 2;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x;
- tmp_coeff = 26;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 2;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 3;
- tmp_index_y = y + 3;
- tmp_coeff = 5;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 3;
- tmp_coeff = 5;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
- }
- }
-@@ -1941,7 +1941,7 @@ bool CxImage::Dither(long method)
- Bmatrix[i] = (BYTE)(dither);
- }
-
-- int scale = max(0,(8-2*order));
-+ int scale = cxmax(0,(8-2*order));
- int level;
- for (long y=0;y<head.biHeight;y++){
- info.nProgress = (long)(100*y/head.biHeight);
-@@ -1981,7 +1981,7 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x+1,y) + (error * 7)/16;
-- level = (BYTE)min(255,max(0,(int)nlevel));
-+ level = (BYTE)cxmin(255,cxmax(0,(int)nlevel));
- SetPixelIndex(x+1,y,level);
- for(int i=-1; i<2; i++){
- switch(i){
-@@ -1993,7 +1993,7 @@ bool CxImage::Dither(long method)
- coeff=1; break;
- }
- nlevel = GetPixelIndex(x+i,y+1) + (error * coeff)/16;
-- level = (BYTE)min(255,max(0,(int)nlevel));
-+ level = (BYTE)cxmin(255,cxmax(0,(int)nlevel));
- SetPixelIndex(x+i,y+1,level);
- }
- }
-@@ -2031,7 +2031,7 @@ bool CxImage::CropRotatedRectangle( long topx, long topy, long width, long heigh
- if ( fabs(angle)<0.0002 )
- return Crop( topx, topy, topx+width, topy+height, iDst);
-
-- startx = min(topx, topx - (long)(sin_angle*(double)height));
-+ startx = cxmin(topx, topx - (long)(sin_angle*(double)height));
- endx = topx + (long)(cos_angle*(double)width);
- endy = topy + (long)(cos_angle*(double)height + sin_angle*(double)width);
- // check: corners of the rectangle must be inside
-@@ -2079,10 +2079,10 @@ bool CxImage::Crop(long left, long top, long right, long bottom, CxImage* iDst)
- {
- if (!pDib) return false;
-
-- long startx = max(0L,min(left,head.biWidth));
-- long endx = max(0L,min(right,head.biWidth));
-- long starty = head.biHeight - max(0L,min(top,head.biHeight));
-- long endy = head.biHeight - max(0L,min(bottom,head.biHeight));
-+ long startx = cxmax(0L,cxmin(left,head.biWidth));
-+ long endx = cxmax(0L,cxmin(right,head.biWidth));
-+ long starty = head.biHeight - cxmax(0L,cxmin(top,head.biHeight));
-+ long endy = head.biHeight - cxmax(0L,cxmin(bottom,head.biHeight));
-
- if (startx==endx || starty==endy) return false;
-
-@@ -2443,8 +2443,8 @@ bool CxImage::CircleTransform(int type,long rmax,float Koeff)
- nx=x+(x%32)-16;
- ny=y;
- }
--// nx=max(xmin,min(nx,xmax));
--// ny=max(ymin,min(ny,ymax));
-+// nx=cxmax(xmin,cxmin(nx,xmax));
-+// ny=cxmax(ymin,cxmin(ny,ymax));
- }
- else { nx=-1;ny=-1;}
- if (head.biClrUsed==0){
-diff --git a/lib/cximage-6.0/CxImage/ximawnd.cpp b/lib/cximage-6.0/CxImage/ximawnd.cpp
-index 2ae2f93..7029cc7 100644
---- a/lib/cximage-6.0/CxImage/ximawnd.cpp
-+++ b/lib/cximage-6.0/CxImage/ximawnd.cpp
-@@ -682,10 +682,10 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
- RECT clipbox,paintbox;
- GetClipBox(hdc,&clipbox);
-
-- paintbox.top = min(clipbox.bottom,max(clipbox.top,y));
-- paintbox.left = min(clipbox.right,max(clipbox.left,x));
-- paintbox.right = max(clipbox.left,min(clipbox.right,x+cx));
-- paintbox.bottom = max(clipbox.top,min(clipbox.bottom,y+cy));
-+ paintbox.top = cxmin(clipbox.bottom,cxmax(clipbox.top,y));
-+ paintbox.left = cxmin(clipbox.right,cxmax(clipbox.left,x));
-+ paintbox.right = cxmax(clipbox.left,cxmin(clipbox.right,x+cx));
-+ paintbox.bottom = cxmax(clipbox.top,cxmin(clipbox.bottom,y+cy));
-
- long destw = paintbox.right - paintbox.left;
- long desth = paintbox.bottom - paintbox.top;
-@@ -730,12 +730,12 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(yy=0;yy<desth;yy++){
- dy = head.biHeight-(ymax-yy-y)*fy;
-- sy = max(0L,(long)floor(dy));
-+ sy = cxmax(0L,(long)floor(dy));
- psrc = info.pImage+sy*info.dwEffWidth;
- pdst = pbase+yy*ew;
- for(xx=0;xx<destw;xx++){
- dx = (xx+xmin-x)*fx;
-- sx = max(0L,(long)floor(dx));
-+ sx = cxmax(0L,(long)floor(dx));
- #if CXIMAGE_SUPPORT_INTERPOLATION
- if (bSmooth){
- if (fx > 1 && fy > 1) {
-@@ -813,7 +813,7 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(yy=0;yy<desth;yy++){
- dy = head.biHeight-(ymax-yy-y)*fy;
-- sy = max(0L,(long)floor(dy));
-+ sy = cxmax(0L,(long)floor(dy));
-
- alphaoffset = sy*head.biWidth;
- pdst = pbase + yy*ew;
-@@ -821,7 +821,7 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(xx=0;xx<destw;xx++){
- dx = (xx+xmin-x)*fx;
-- sx = max(0L,(long)floor(dx));
-+ sx = cxmax(0L,(long)floor(dx));
-
- if (bAlpha) a=pAlpha[alphaoffset+sx]; else a=255;
- a =(BYTE)((a*(1+info.nAlphaMax))>>8);
diff --git a/abs/extra/kodi/PKGBUILD b/abs/extra/kodi/PKGBUILD
index 14c19f9..3f2fcd2 100644
--- a/abs/extra/kodi/PKGBUILD
+++ b/abs/extra/kodi/PKGBUILD
@@ -2,154 +2,122 @@
# $Id$
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer: BlackIkeEagle < ike DOT devolder AT gmail DOT com >
-# Contributor: graysky <graysky AT archlinux DOT us>
-# Contributor: DonVla <donvla@users.sourceforge.net>
-# Contributor: Ulf Winkelvos <ulf [at] winkelvos [dot] de>
-# Contributor: Ralf Barth <archlinux dot org at haggy dot org>
-# Contributor: B & monty - Thanks for your hints :)
-# Contributor: marzoul
-# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com>
# Contributor: Zeqadious <zeqadious.at.gmail.dot.com>
+# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com >
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Maxime Gauduin <alucryd@gmail.com>
-#
-# Original credits go to Edgar Hucek <gimli at dark-green dot com>
-# for his xbmc-vdpau-vdr PKGBUILD at https://archvdr.svn.sourceforge.net/svnroot/archvdr/trunk/archvdr/xbmc-vdpau-vdr/PKGBUILD
pkgbase=kodi
pkgname=('kodi' 'kodi-eventclients' 'kodi-tools-texturepacker' 'kodi-dev')
-pkgver=17.6
-_codename=Krypton
-pkgrel=5
+pkgver=18.1
+_codename=Leia
+pkgrel=0
arch=('x86_64')
url="http://kodi.tv"
license=('GPL2')
makedepends=(
- 'afpfs-ng' 'bluez-libs' 'cmake' 'curl' 'doxygen' 'glew'
+ 'afpfs-ng' 'bluez-libs' 'boost' 'cmake' 'curl' 'cwiid' 'fmt' 'doxygen' 'git' 'glew'
'gperf' 'hicolor-icon-theme' 'jasper' 'java-runtime' 'libaacs' 'libass'
'libbluray' 'libcdio' 'libcec' 'libgl' 'libmysqlclient' 'libmicrohttpd'
'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libssh' 'libva'
- 'libvdpau' 'libxrandr' 'libxslt' 'lzo' 'mesa' 'nasm' 'nss-mdns'
- 'python2-pillow' 'python2-pybluez' 'python2-simplejson' 'rtmpdump'
- 'shairplay' 'smbclient' 'speex' 'swig' 'taglib' 'tinyxml' 'unzip' 'upower'
- 'yajl' 'zip' 'git' 'giflib'
+ 'libvdpau' 'libxrandr' 'libxslt' 'lirc' 'lzo' 'mesa' 'nasm' 'nss-mdns'
+ 'python2-pillow' 'python2-pybluez' 'python2-simplejson' 'rapidjson' 'rtmpdump' 'sdl2'
+ 'sdl_image' 'shairplay' 'smbclient' 'swig' 'taglib' 'tinyxml' 'unzip' 'upower'
+ 'yajl' 'zip' 'mesa' 'dcadec' 'libcrossguid' 'giflib' 'ghostscript'
)
-_libdvdcss_commit="2f12236bc1c92f73c21e973363f79eb300de603f"
-_libdvdnav_commit="981488f7f27554b103cca10c1fbeba027396c94a"
-_libdvdread_commit="17d99db97e7b8f23077b342369d3c22a6250affd"
-_ffmpeg_version="3.1.11-$_codename-17.5"
source=(
- "$pkgbase-$pkgver-$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
- "$pkgbase-libdvdcss-$_libdvdcss_commit.tar.gz::https://github.com/xbmc/libdvdcss/archive/$_libdvdcss_commit.tar.gz"
- "$pkgbase-libdvdnav-$_libdvdnav_commit.tar.gz::https://github.com/xbmc/libdvdnav/archive/$_libdvdnav_commit.tar.gz"
- "$pkgbase-libdvdread-$_libdvdread_commit.tar.gz::https://github.com/xbmc/libdvdread/archive/$_libdvdread_commit.tar.gz"
- "$pkgbase-ffmpeg-$_ffmpeg_version.tar.gz::https://github.com/xbmc/FFmpeg/archive/$_ffmpeg_version.tar.gz"
- 'fix-python-lib-path.patch'
- 'cheat-sse-build.patch'
- 'cpuinfo'
+ "xbmc-$pkgver$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
'kodi.sh'
'kodi_lib.conf'
+ 'kodi.install'
)
-noextract=(
- "$pkgbase-libdvdcss-$_libdvdcss_commit.tar.gz"
- "$pkgbase-libdvdnav-$_libdvdnav_commit.tar.gz"
- "$pkgbase-libdvdread-$_libdvdread_commit.tar.gz"
- "$pkgbase-ffmpeg-$_ffmpeg_version.tar.gz"
-)
-sha512sums=('1f1ba91e6129ab423f9ad47b63d7bb75775dbf18638a96413a572aaa790f4f0d738ca35486513e158a7f55d501f78f08dd9d68aabe2fbb80a729c6091b264111'
- '12ba7aa653fcb26d5336bf2a8110c924d634cec79f684bbf19dc38ea33f69fb68c22c97f4c09e5ca7c35f95f6c324a6d70ccc2c501a99122a9321cafd33b2cd9'
- '005355da5e3d34f69737f7c3fe7884e82ffdc8f654f337e97d4a4d1e486c9f346f63b4dee74de2765e7a8d94925de5d25c3c82da732d2e8d4f58fcfeb9dd2586'
- 'e59ae0bfdc62698e407e3d70503c6a7c5e308545c9dae7843e25db3b5b62d9b26256be77ef4e884263add6b4abec3438c324bfd5715f6ca2ce7fa5962d43a6c2'
- 'b28bb6970c6767213f34e5f4f3e48ad5219a6c668a5264ff7de0a42712cb7393f389ddd88f56785a2dc8089f8231ae5fd05adfa10dbf15ea3e0ad7bc2ccd4d73'
- '0f41604e38648969572a66d1124d6e090c3bfca4f9d8ccabcd1806254c38b178ee08df35e1bbbd1228f820729df52353321b3257122af601c3233dbc6405c6d2'
- 'be8d6b77088373d0173dee6434ebd04c9382fb00190641b392a6f9f5338b35d186f6d871aaea4a01908f283a452b23de3a1113947d9070e77fde531e32458f7e'
- '539b33f30f6735caaf57fb9f19de449b8a8902362ae9e66a6fceabd530d02888533d2ab262fb187670780c997e5c1d23bd715a3c6860fd50280c1031f47865f7'
- '554a2f1f82fdf93f6b2f0c0bd3947e17660d728a0d53fcb3592fb0dfb992c9174ad741e3aa1c04ae0ec534a6c4b78423effc39428a58cab8750663644679b988'
- 'f4085fbc75c0a0df4ca4cdd5356e6214f2a2e81895d410a8c3181708b91bd34de64719e4cac1e9fe3496b82e950839937ec0438a9cf6ce91cb3eacc29f81cb3b')
+
prepare() {
- [[ -d kodi-build ]] && rm -rf kodi-build
- mkdir kodi-build
-
- cd "xbmc-$pkgver-$_codename"
- patch -p1 -i "$srcdir/fix-python-lib-path.patch"
- # detect if building in arch chroot
- if [[ "$srcdir" =~ ^\/build.* ]]; then
- patch -p1 -i "$srcdir/cheat-sse-build.patch"
- fi
+ cd "$srcdir/xbmc-$pkgver-$_codename"
+
+ find -type f -name *.py -exec sed 's|^#!.*python$|#!/usr/bin/python2|' -i "{}" +
+# sed 's|^#!.*python$|#!/usr/bin/python2|' -i tools/depends/native/rpl-native/rpl
+ sed 's/python/python2/' -i tools/Linux/kodi.sh.in
+# sed 's/shell python/shell python2/' -i tools/EventClients/Makefile.in
+
}
build() {
- cd kodi-build
- cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ cd "$srcdir/xbmc-$pkgver-$_codename"
+
+ # Bootstrapping
+ # MAKEFLAGS=-j1 ./bootstrap
+
+ #./configure --help
+ #return 1
+
+ # Configuring XBMC
+ export PYTHON_VERSION=2 # external python v2
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
- -DENABLE_EVENTCLIENTS=ON \
-DLIRC_DEVICE=/run/lirc/lircd \
- -Dlibdvdcss_URL="$srcdir/$pkgbase-libdvdcss-$_libdvdcss_commit.tar.gz" \
- -Dlibdvdnav_URL="$srcdir/$pkgbase-libdvdnav-$_libdvdnav_commit.tar.gz" \
- -Dlibdvdread_URL="$srcdir/$pkgbase-libdvdread-$_libdvdread_commit.tar.gz" \
- -DFFMPEG_URL="$srcdir/$pkgbase-ffmpeg-$_ffmpeg_version.tar.gz" \
- ../"xbmc-$pkgver-$_codename"/project/cmake
- make
+ -DENABLE_AIRTUNES=off \
+ -DENABLE_INTERNAL_FFMPEG=on \
+ -DENABLE_INTERNAL_FMT=on \
+ -DENABLE_INTERNAL_FSTRCMP=1 \
+ -DENABLE_INTERNAL_FLATBUFFERS=on \
+ .
+ make VERBOSE=1
make preinstall
}
-# kodi
-# components: kodi, kodi-bin
-
package_kodi() {
pkgdesc="A software media player and entertainment hub for digital media"
+
+ # depends expected for kodi plugins:
+ # 'python2-pillow' 'python2-pybluez' 'python2-simplejson'
+ # depends expeced in FEH.py
+ # 'mesa-demos' 'xorg-xdpyinfo'
depends=(
- 'bluez-libs' 'desktop-file-utils' 'freetype2' 'fribidi'
- 'hicolor-icon-theme' 'libass' 'libcdio' 'libjpeg-turbo' 'libmariadbclient'
- 'libmicrohttpd' 'libssh' 'libva' 'libvdpau' 'libxrandr'
- 'libxslt' 'lzo' 'mesa' 'python2-pillow' 'python2-simplejson' 'smbclient'
- 'speex' 'taglib' 'tinyxml' 'xorg-xdpyinfo' 'yajl'
+ 'python2-pillow' 'python2-pybluez' 'python2-simplejson'
+ 'mesa-demos' 'xorg-xdpyinfo' 'lirc'
+ 'bluez-libs' 'fribidi' 'glew' 'hicolor-icon-theme' 'libass' 'libcdio'
+ 'libjpeg-turbo' 'libmysqlclient' 'libmicrohttpd' 'libnfs' 'libssh'
+ 'libva' 'libxrandr' 'libxslt' 'lzo' 'sdl2' 'smbclient' 'taglib' 'tinyxml'
+ 'yajl' 'mesa' 'dcadec' 'desktop-file-utils'
)
optdepends=(
'afpfs-ng: Apple shares support'
'bluez: Blutooth support'
- 'python2-pybluez: Bluetooth support'
- 'libnfs: NFS shares support'
'libplist: AirPlay support'
'libcec: Pulse-Eight USB-CEC adapter support'
'lirc: Remote controller support'
- 'lsb-release: log distro information in crashlog'
'shairplay: AirPlay support'
+ 'udisks: Automount external drives'
'unrar: Archives support'
'unzip: Archives support'
'upower: Display battery level'
+ 'lsb-release: log distro information in crashlog'
)
install="kodi.install"
provides=('xbmc')
conflicts=('xbmc')
replaces=('xbmc')
- _components=(
- 'kodi'
- 'kodi-bin'
- )
+ cd "$srcdir/xbmc-$pkgver-$_codename"
+ # Running make install
+ make DESTDIR="$pkgdir" install
- cd kodi-build
- # install eventclients
- for _cmp in ${_components[@]}; do
- DESTDIR="$pkgdir" /usr/bin/cmake \
- -DCMAKE_INSTALL_COMPONENT="$_cmp" \
- -P cmake_install.cmake
- done
+ # We will no longer support the xbmc name
+ #rm "$pkgdir/usr/share/xsessions/xbmc.desktop"
+ #rm "$pkgdir/usr/bin/"xbmc{,-standalone}
+ # we will leave /usr/{include,lib,share}/xbmc for now
# Licenses
- install -dm755 "$pkgdir/usr/share/licenses/$pkgname"
- for licensef in LICENSE.GPL copying.txt; do
- mv "$pkgdir/usr/share/doc/kodi/$licensef" \
- "$pkgdir/usr/share/licenses/$pkgname"
+ install -dm755 ${pkgdir}/usr/share/licenses/${pkgname}
+ for licensef in LICENSE.md ; do
+ mv ${pkgdir}/usr/share/doc/kodi/${licensef} \
+ ${pkgdir}/usr/share/licenses/${pkgname}
done
- # python2 is being used
- cd "$pkgdir"
- grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done
-
# LinHES stuff
mkdir -p ${pkgdir}/usr/LH/bin
install -D -m 0755 ${srcdir}/kodi.sh ${pkgdir}/usr/LH/bin
@@ -159,19 +127,18 @@ package_kodi() {
# kodi-eventclients
# components: kodi-eventclients-common kodi-eventclients-ps3 kodi-eventclients-wiiremote kodi-eventclients-xbmc-send
-
package_kodi-eventclients() {
pkgdesc="Kodi Event Clients"
- conflicts=('kodi-eventclients')
- optdepends=('python2: most eventclients are implemented in python2')
+ depends=('cwiid')
_components=(
- 'kodi-eventclients-common'
- 'kodi-eventclients-ps3'
- 'kodi-eventclients-xbmc-send'
- )
+ 'kodi-eventclients-common'
+ 'kodi-eventclients-ps3'
+ 'kodi-eventclients-wiiremote'
+ 'kodi-eventclients-xbmc-send'
+ )
- cd kodi-build
+ cd "$srcdir/xbmc-$pkgver-$_codename"
# install eventclients
for _cmp in ${_components[@]}; do
DESTDIR="$pkgdir" /usr/bin/cmake \
@@ -186,16 +153,13 @@ package_kodi-eventclients() {
# kodi-tools-texturepacker
# components: kodi-tools-texturepacker
-
package_kodi-tools-texturepacker() {
pkgdesc="Kodi Texturepacker tool"
- depends=('libpng' 'giflib' 'libjpeg-turbo' 'lzo')
+ depends=('giflib' 'libjpeg-turbo' 'libpng' 'lzo')
- _components=(
- 'kodi-tools-texturepacker'
- )
+ _components=('kodi-tools-texturepacker')
- cd kodi-build
+ cd "$srcdir/xbmc-$pkgver-$_codename"
# install eventclients
for _cmp in ${_components[@]}; do
DESTDIR="$pkgdir" /usr/bin/cmake \
@@ -206,24 +170,23 @@ package_kodi-tools-texturepacker() {
# kodi-dev
# components: kodi-addon-dev kodi-audio-dev kodi-eventclients-dev kodi-game-dev kodi-inputstream-dev kodi-peripheral-dev kodi-pvr-dev kodi-screensaver-dev kodi-visualization-dev
-
package_kodi-dev() {
pkgdesc="Kodi dev files"
depends=('kodi')
_components=(
- 'kodi-addon-dev'
- 'kodi-audio-dev'
- 'kodi-eventclients-dev'
- 'kodi-game-dev'
- 'kodi-inputstream-dev'
- 'kodi-peripheral-dev'
- 'kodi-pvr-dev'
- 'kodi-screensaver-dev'
- 'kodi-visualization-dev'
- )
-
- cd kodi-build
+ 'kodi-addon-dev'
+ 'kodi-audio-dev'
+ 'kodi-eventclients-dev'
+ 'kodi-game-dev'
+ 'kodi-inputstream-dev'
+ 'kodi-peripheral-dev'
+ 'kodi-pvr-dev'
+ 'kodi-screensaver-dev'
+ 'kodi-visualization-dev'
+ )
+
+ cd "$srcdir/xbmc-$pkgver-$_codename"
# install eventclients
for _cmp in ${_components[@]}; do
DESTDIR="$pkgdir" /usr/bin/cmake \
@@ -235,3 +198,8 @@ package_kodi-dev() {
cd "$pkgdir"
grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done
}
+
+md5sums=('02062e4de4e3e6d540793e211812ebf3'
+ 'f6adc8e06d7076143ca2ad118126b158'
+ 'f04d1c89f5108c6aba36cf708a74cc95'
+ 'b86ef98474057727194f5863985b5967')
diff --git a/abs/extra/kodi/__changelog b/abs/extra/kodi/__changelog
index 6069eb3..9d078ea 100644
--- a/abs/extra/kodi/__changelog
+++ b/abs/extra/kodi/__changelog
@@ -3,3 +3,4 @@ PKGBUILD - Add /usr/LH/bin/kodi.sh
PKGBUILD - Add /etc/gen_lib_xml.d/kodi_lib.conf
kodi.install - add gen_lib_xml.py to post_install and post_remove
PKGBUILD - change dep libmariadbclient to libmysqlclient
+PKGBUILD - add lirc to makedepends and depends
diff --git a/abs/extra/kodi/cheat-sse-build.patch b/abs/extra/kodi/cheat-sse-build.patch
deleted file mode 100644
index 8b4b3b1..0000000
--- a/abs/extra/kodi/cheat-sse-build.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/project/cmake/modules/FindSSE.cmake 2017-08-22 09:29:22.000000000 +0200
-+++ b/project/cmake/modules/FindSSE.cmake 2018-01-06 19:36:32.716303559 +0100
-@@ -4,7 +4,7 @@
-
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- if(CPU MATCHES "x86_64" OR CPU MATCHES "i.86")
-- exec_program(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO)
-+ exec_program(cat ARGS "/build/kodi/src/cpuinfo" OUTPUT_VARIABLE CPUINFO)
-
- string(REGEX REPLACE "^.*(sse).*$" "\\1" _SSE_THERE ${CPUINFO})
- string(COMPARE EQUAL "sse" "${_SSE_THERE}" _SSE_TRUE)
diff --git a/abs/extra/kodi/cpuinfo b/abs/extra/kodi/cpuinfo
deleted file mode 100644
index b0884ec..0000000
--- a/abs/extra/kodi/cpuinfo
+++ /dev/null
@@ -1,4 +0,0 @@
-processor : 1
-vendor_id : KodiCheat
-model name : KodiCheat SSE
-flags : sse sse2 pni ssse3 sse4_1 sse4_2 avx avx2
diff --git a/abs/extra/kodi/fix-ftpparse.patch b/abs/extra/kodi/fix-ftpparse.patch
deleted file mode 100644
index feec949..0000000
--- a/abs/extra/kodi/fix-ftpparse.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- a/xbmc/filesystem/FTPParse.cpp 2017-05-24 22:49:32.000000000 +0200
-+++ b/xbmc/filesystem/FTPParse.cpp 2017-07-15 14:15:54.908823456 +0200
-@@ -34,7 +34,7 @@
- m_time = 0;
- }
-
--string CFTPParse::getName()
-+std::string CFTPParse::getName()
- {
- return m_name;
- }
-@@ -59,16 +59,16 @@
- return m_time;
- }
-
--void CFTPParse::setTime(string str)
-+void CFTPParse::setTime(std::string str)
- {
- /* Variables used to capture patterns via the regexes */
-- string month;
-- string day;
-- string year;
-- string hour;
-- string minute;
-- string second;
-- string am_or_pm;
-+ std::string month;
-+ std::string day;
-+ std::string year;
-+ std::string hour;
-+ std::string minute;
-+ std::string second;
-+ std::string am_or_pm;
-
- /* time struct used to set the time_t variable */
- struct tm time_struct = {};
-@@ -338,21 +338,21 @@
- return day_of_week;
- }
-
--int CFTPParse::FTPParse(string str)
-+int CFTPParse::FTPParse(std::string str)
- {
- /* Various variable to capture patterns via the regexes */
-- string permissions;
-- string link_count;
-- string owner;
-- string group;
-- string size;
-- string date;
-- string name;
-- string type;
-- string stuff;
-- string facts;
-- string version;
-- string file_id;
-+ std::string permissions;
-+ std::string link_count;
-+ std::string owner;
-+ std::string group;
-+ std::string size;
-+ std::string date;
-+ std::string name;
-+ std::string type;
-+ std::string stuff;
-+ std::string facts;
-+ std::string version;
-+ std::string file_id;
-
- /* Regex for standard Unix listing formats */
- pcrecpp::RE unix_re("^([-bcdlps])" // type
diff --git a/abs/extra/kodi/fix-python-lib-path.patch b/abs/extra/kodi/fix-python-lib-path.patch
deleted file mode 100644
index 3956580..0000000
--- a/abs/extra/kodi/fix-python-lib-path.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/project/cmake/scripts/linux/Install.cmake 2017-03-20 17:17:49.000000000 +0100
-+++ b/project/cmake/scripts/linux/Install.cmake 2017-05-20 15:42:09.608550173 +0200
-@@ -199,7 +199,7 @@
- install(PROGRAMS ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/bt/__init__.py
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/bt/bt.py
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/bt/hid.py
-- DESTINATION lib/python2.7/dist-packages/${APP_NAME_LC}/bt
-+ DESTINATION lib/python2.7/site-packages/${APP_NAME_LC}/bt
- COMPONENT kodi-eventclients-common)
-
- # Install kodi-eventclients-common PS3 python files
-@@ -208,7 +208,7 @@
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/ps3/sixaxis.py
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/ps3/sixpair.py
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/ps3/sixwatch.py
-- DESTINATION lib/python2.7/dist-packages/${APP_NAME_LC}/ps3
-+ DESTINATION lib/python2.7/site-packages/${APP_NAME_LC}/ps3
- COMPONENT kodi-eventclients-common)
-
- # Install kodi-eventclients-common python files
-@@ -218,7 +218,7 @@
- "${CORE_SOURCE_DIR}/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py"
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/xbmcclient.py
- ${CORE_SOURCE_DIR}/tools/EventClients/lib/python/zeroconf.py
-- DESTINATION lib/python2.7/dist-packages/${APP_NAME_LC}
-+ DESTINATION lib/python2.7/site-packages/${APP_NAME_LC}
- COMPONENT kodi-eventclients-common)
-
- # Install kodi-eventclients-common icons
diff --git a/abs/extra/kodi/kodi.install b/abs/extra/kodi/kodi.install
index e271256..5d7ea46 100644
--- a/abs/extra/kodi/kodi.install
+++ b/abs/extra/kodi/kodi.install
@@ -3,6 +3,7 @@ post_install() {
}
post_upgrade() {
+ /usr/bin/true
}
post_remove() {
diff --git a/abs/extra/libbluray/PKGBUILD b/abs/extra/libbluray/PKGBUILD
index d596927..61077e3 100644
--- a/abs/extra/libbluray/PKGBUILD
+++ b/abs/extra/libbluray/PKGBUILD
@@ -1,28 +1,35 @@
-# $Id$
-# Maintainer: Ionut Biru <ibiru@archlinux.org>
-# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Andrew Cook <ariscop@gmail.com>
pkgname=libbluray
-pkgver=0.9.2
-pkgrel=1
+pkgver=1.0.2
+pkgrel=2
pkgdesc='Library to access Blu-Ray disks for video playback'
-arch=('i686' 'x86_64')
+arch=('x86_64')
url='http://www.videolan.org/developers/libbluray.html'
license=('LGPL2.1')
-depends=('libxml2' 'freetype2' 'fontconfig')
-makedepends=('apache-ant')
-optdepends=('java-environment: for BD-J library')
+depends=('fontconfig' 'libxml2'
+ 'libfreetype.so')
+makedepends=('apache-ant' 'java-environment=8')
+optdepends=('java-runtime=8: BD-J library')
provides=('libbluray.so')
-source=(ftp://ftp.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2)
-md5sums=('836b2de16547776bf2726166cf796f13')
+source=("https://download.videolan.org/pub/videolan/libbluray/${pkgver}/libbluray-${pkgver}.tar.bz2")
+sha256sums=('6d9e7c4e416f664c330d9fa5a05ad79a3fb39b95adfc3fd6910cbed503b7aeff')
build() {
- cd $pkgname-$pkgver
- ./configure --prefix=/usr
+ cd libbluray-${pkgver}
+
+ ./configure \
+ --prefix='/usr'
make
}
package() {
- make DESTDIR="$pkgdir" -C $pkgname-$pkgver install
+ cd libbluray-${pkgver}
+
+ make DESTDIR="${pkgdir}" install
}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/libdvdcss/PKGBUILD b/abs/extra/libdvdcss/PKGBUILD
index 010e6d7..4270cb3 100644
--- a/abs/extra/libdvdcss/PKGBUILD
+++ b/abs/extra/libdvdcss/PKGBUILD
@@ -1,20 +1,19 @@
-# $Id$
-# Maintainer:
+# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: arjan <arjan@archlinux.org>
# Contributor Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=libdvdcss
-pkgver=1.3.0
+pkgver=1.4.2
pkgrel=1
pkgdesc="Portable abstraction library for DVD decryption"
-url="http://www.videolan.org/libdvdcss"
-arch=('i686' 'x86_64')
+url="https://www.videolan.org/developers/libdvdcss.html"
+arch=('x86_64')
license=('GPL')
depends=('glibc')
options=('!docs' '!emptydirs')
-source=(http://download.videolan.org/pub/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2)
-sha1sums=('b3ccd70a510aa04d644f32b398489a3122a7e11a')
+source=(https://download.videolan.org/pub/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2)
+sha256sums=('78c2ed77ec9c0d8fbed7bf7d3abc82068b8864be494cfad165821377ff3f2575')
build() {
cd $pkgname-$pkgver
diff --git a/abs/extra/libepoxy/PKGBUILD b/abs/extra/libepoxy/PKGBUILD
index 5ba5cf8..213ccfe 100644
--- a/abs/extra/libepoxy/PKGBUILD
+++ b/abs/extra/libepoxy/PKGBUILD
@@ -1,35 +1,43 @@
-# $Id$
# Maintainer: Laurent Carlier <lordheavym@gmail.com>
pkgname=libepoxy
-pkgver=1.2
-pkgrel=2
-pkgdesc="A library for handling OpenGL function pointer management for you"
+pkgver=1.5.3
+pkgrel=1
+pkgdesc="Library handling OpenGL function pointer management"
url="https://github.com/anholt/libepoxy"
-arch=('i686' 'x86_64')
+arch=(x86_64)
license=(MIT)
-depends=('glibc')
-makedepends=('xorg-util-macros' 'python2' 'mesa-libgl')
-options=('!libtool')
-source=(${pkgname}-${pkgver}.tar.gz::https://github.com/anholt/${pkgname}/archive/v${pkgver}.tar.gz)
-md5sums=('12d6b7621f086c0c928887c27d90bc30')
+depends=(glibc)
+makedepends=(python mesa-libgl git meson doxygen graphviz)
+_commit=16b1481e00084682d5ae5d38178e3e418976dfae # tags/1.5.3^0
+source=("git+https://github.com/anholt/libepoxy#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
-build() {
- cd "${pkgname}-${pkgver}"
+prepare() {
+ cd $pkgname
+ # Reduce docs size
+ printf '%s\n' >>doc/Doxyfile.in \
+ HAVE_DOT=yes DOT_IMAGE_FORMAT=svg INTERACTIVE_SVG=yes
+}
- ./autogen.sh --prefix=/usr
+build() {
+ arch-meson $pkgname build \
+ -D docs=true
+ ninja -C build
}
check() {
- cd "${pkgname}-${pkgver}"
-
- make -k check
+ meson test -C build
}
package() {
- cd "${pkgname}-${pkgver}"
-
- make DESTDIR="$pkgdir" install
- install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dm644 $pkgname/COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
+# vim:set sw=2 et:
diff --git a/abs/extra/libepoxy/__changelog b/abs/extra/libepoxy/__changelog
deleted file mode 100644
index 00bdcfb..0000000
--- a/abs/extra/libepoxy/__changelog
+++ /dev/null
@@ -1 +0,0 @@
--PKGBUILD: change dep python to python2
diff --git a/abs/extra/libsass/PKGBUILD b/abs/extra/libsass/PKGBUILD
new file mode 100644
index 0000000..f649ce7
--- /dev/null
+++ b/abs/extra/libsass/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Jerome Leclanche <jerome@leclan.ch>
+# Contributor: Isaac Dupree <antispam@idupree.com>
+
+pkgname=libsass
+pkgver=3.5.5
+pkgrel=1
+pkgdesc="C implementation of Sass CSS preprocessor (library)."
+arch=("x86_64")
+url="http://libsass.org/"
+license=("MIT")
+source=("$pkgname-$pkgver.tar.gz::https://github.com/sass/$pkgname/archive/$pkgver.tar.gz")
+sha256sums=('487ca58f1dfdc4055079af04f0ad120747385d3b3926b1c8f46e4b00540fdb70')
+
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ autoreconf -i
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+ install -D -m644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/abs/extra/libsoup/PKGBUILD b/abs/extra/libsoup/PKGBUILD
index ee50628..ff6678a 100644
--- a/abs/extra/libsoup/PKGBUILD
+++ b/abs/extra/libsoup/PKGBUILD
@@ -1,36 +1,38 @@
-# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libsoup
-pkgver=2.48.0
+pkgver=2.64.2
pkgrel=1
-pkgdesc="GNOME HTTP Library"
-arch=(i686 x86_64)
+pkgdesc="HTTP client/server library for GNOME"
+url="https://wiki.gnome.org/Projects/libsoup"
+arch=(x86_64)
license=(LGPL)
-url="http://www.gnome.org"
-depends=(glib2 libxml2 glib-networking sqlite)
-makedepends=(intltool gobject-introspection python2)
-checkdepends=(apache php php-apache)
-provides=("libsoup-gnome=$pkgver-$pkgrel")
-conflicts=(libsoup-gnome)
-replaces=(libsoup-gnome)
-options=('!emptydirs')
-source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz)
-sha256sums=('ea34dd64fe44343445daf6dd690d0691e9d973468de44878da97371c16d89784')
+depends=(glib2 libxml2 glib-networking sqlite krb5 libpsl)
+makedepends=(gobject-introspection python vala git gtk-doc meson)
+checkdepends=(apache php-apache)
+_commit=b25faf59f1bb782e95be94f70a98a369846d1524 # tags/2.64.2^0
+source=("git+https://gitlab.gnome.org/GNOME/libsoup.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+}
build() {
- cd $pkgname-$pkgver
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --disable-static
- make
+ arch-meson $pkgname build -D doc=true -D vapi=true
+ ninja -C build
}
check() {
- cd $pkgname-$pkgver
- make check
+ meson test -C build
}
package() {
- cd $pkgname-$pkgver
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
diff --git a/abs/extra/libsoup/__changelog b/abs/extra/libsoup/__changelog
deleted file mode 100644
index 29f2771..0000000
--- a/abs/extra/libsoup/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-PKGBUILD: remove python from deps
diff --git a/abs/extra/libstemmer/PKGBUILD b/abs/extra/libstemmer/PKGBUILD
new file mode 100644
index 0000000..ccee9fd
--- /dev/null
+++ b/abs/extra/libstemmer/PKGBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgbase=snowball
+pkgname=(snowball libstemmer)
+pkgver=0+337
+pkgrel=3
+pkgdesc="String processing language for creating stemming algorithms"
+arch=(x86_64)
+url="http://snowballstem.org/"
+license=(BSD)
+depends=(glibc)
+makedepends=(git)
+_commit=fc2adaa96b0561506e6c1a80d73de7f4e0fa9663
+source=("git+https://github.com/snowballstem/snowball#commit=$_commit"
+ dynamiclib.patch)
+sha256sums=('SKIP'
+ '99511a11cdeeb1ef1eaa9d7b777f6934693d4696ba9523de40b886f7d898058e')
+
+prepare() {
+ cd $pkgbase
+ patch -Np1 -i ../dynamiclib.patch
+}
+
+pkgver() {
+ cd $pkgbase
+ echo "0+$(git rev-list --count HEAD)"
+}
+
+build() {
+ cd $pkgbase
+ make
+}
+
+check() {
+ cd $pkgbase
+ # Disabled - needs external test data
+ #make check
+}
+
+package_snowball() {
+ cd $pkgbase
+ install -d "$pkgdir/usr/bin"
+ install -t "$pkgdir/usr/bin" snowball stemwords
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/snowball/LICENSE"
+}
+
+package_libstemmer() {
+ pkgdesc="Stemming library supporting several languages"
+ cd $pkgbase
+ install -Dm644 {.,"$pkgdir"/usr}/include/libstemmer.h
+ install -D {.,"$pkgdir"/usr/lib}/libstemmer.so.0.0.0
+ ln -s libstemmer.so.0.0.0 "$pkgdir/usr/lib/libstemmer.so.0"
+ ln -s libstemmer.so.0 "$pkgdir/usr/lib/libstemmer.so"
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/libstemmer/LICENSE"
+}
diff --git a/abs/extra/libstemmer/dynamiclib.patch b/abs/extra/libstemmer/dynamiclib.patch
new file mode 100644
index 0000000..7d86cde
--- /dev/null
+++ b/abs/extra/libstemmer/dynamiclib.patch
@@ -0,0 +1,39 @@
+diff --git c/GNUmakefile i/GNUmakefile
+index 1693f5a..b33a42e 100644
+--- c/GNUmakefile
++++ i/GNUmakefile
+@@ -112,10 +112,10 @@ C_OTHER_OBJECTS = $(C_OTHER_SOURCES:.c=.o)
+ JAVA_CLASSES = $(JAVA_SOURCES:.java=.class)
+ JAVA_RUNTIME_CLASSES=$(JAVARUNTIME_SOURCES:.java=.class)
+
+-CFLAGS=-O2 -W -Wall -Wmissing-prototypes -Wmissing-declarations
++CFLAGS=-O2 -fPIC -W -Wall -Wmissing-prototypes -Wmissing-declarations
+ CPPFLAGS=-Iinclude
+
+-all: snowball libstemmer.o stemwords $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
++all: snowball libstemmer.o libstemmer.so stemwords $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
+
+ clean:
+ rm -f $(COMPILER_OBJECTS) $(RUNTIME_OBJECTS) \
+@@ -158,6 +158,9 @@ libstemmer/libstemmer.o: libstemmer/modules.h $(C_LIB_HEADERS)
+ libstemmer.o: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS)
+ $(AR) -cru $@ $^
+
++libstemmer.so: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS)
++ $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname,libstemmer.so.0,-version-script,libstemmer/symbol.map -o $@.0.0.0 $^
++
+ stemwords: $(STEMWORDS_OBJECTS) libstemmer.o
+ $(CC) -o $@ $^
+
+diff --git c/libstemmer/symbol.map i/libstemmer/symbol.map
+new file mode 100644
+index 0000000..7a3d423
+--- /dev/null
++++ i/libstemmer/symbol.map
+@@ -0,0 +1,6 @@
++SB_STEMMER_0 {
++ global:
++ sb_stemmer_*;
++ local:
++ *;
++};
diff --git a/abs/extra/libva-intel-driver/427.patch b/abs/extra/libva-intel-driver/427.patch
new file mode 100644
index 0000000..906fa8c
--- /dev/null
+++ b/abs/extra/libva-intel-driver/427.patch
@@ -0,0 +1,65 @@
+From 0abb7a1c938437000bfca1a9b3706884467c681e Mon Sep 17 00:00:00 2001
+From: Haihao Xiang <haihao.xiang@intel.com>
+Date: Fri, 7 Dec 2018 13:31:43 +0800
+Subject: [PATCH] Check the interface from libva first
+
+This fixes https://github.com/intel/intel-vaapi-driver/issues/419
+
+Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
+---
+ src/i965_output_wayland.c | 27 ++++++++++++++++-----------
+ 1 file changed, 16 insertions(+), 11 deletions(-)
+
+diff --git a/src/i965_output_wayland.c b/src/i965_output_wayland.c
+index 122db953..a637552e 100644
+--- a/src/i965_output_wayland.c
++++ b/src/i965_output_wayland.c
+@@ -397,6 +397,7 @@ i965_output_wayland_init(VADriverContextP ctx)
+ struct i965_driver_data * const i965 = i965_driver_data(ctx);
+ struct dso_handle *dso_handle;
+ struct wl_vtable *wl_vtable;
++ struct VADriverVTableWayland * const vtable = ctx->vtable_wayland;
+
+ static const struct dso_symbol libegl_symbols[] = {
+ {
+@@ -465,25 +466,29 @@ i965_output_wayland_init(VADriverContextP ctx)
+ if (!i965->wl_output)
+ goto error;
+
+- i965->wl_output->libegl_handle = dso_open(LIBEGL_NAME);
+- if (!i965->wl_output->libegl_handle) {
+- i965->wl_output->libegl_handle = dso_open(LIBEGL_NAME_FALLBACK);
+- if (!i965->wl_output->libegl_handle)
++ wl_vtable = &i965->wl_output->vtable;
++
++ if (vtable->wl_interface)
++ wl_vtable->drm_interface = vtable->wl_interface;
++ else {
++ i965->wl_output->libegl_handle = dso_open(LIBEGL_NAME);
++ if (!i965->wl_output->libegl_handle) {
++ i965->wl_output->libegl_handle = dso_open(LIBEGL_NAME_FALLBACK);
++ if (!i965->wl_output->libegl_handle)
++ goto error;
++ }
++
++ dso_handle = i965->wl_output->libegl_handle;
++ if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
++ libegl_symbols))
+ goto error;
+ }
+
+- dso_handle = i965->wl_output->libegl_handle;
+- wl_vtable = &i965->wl_output->vtable;
+- if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
+- libegl_symbols))
+- goto error;
+-
+ i965->wl_output->libwl_client_handle = dso_open(LIBWAYLAND_CLIENT_NAME);
+ if (!i965->wl_output->libwl_client_handle)
+ goto error;
+
+ dso_handle = i965->wl_output->libwl_client_handle;
+- wl_vtable = &i965->wl_output->vtable;
+ if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
+ libwl_client_symbols))
+ goto error;
diff --git a/abs/extra/libva-intel-driver/PKGBUILD b/abs/extra/libva-intel-driver/PKGBUILD
index 1166e5e..f699b3b 100644
--- a/abs/extra/libva-intel-driver/PKGBUILD
+++ b/abs/extra/libva-intel-driver/PKGBUILD
@@ -1,35 +1,44 @@
-# $Id$
-# Maintainer: Ionut Biru <ibiru@archlinux.org>
-# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
pkgname=libva-intel-driver
-pkgver=1.7.3
-pkgrel=1
+pkgver=2.3.0
+pkgrel=2
pkgdesc='VA-API implementation for Intel G45 and HD Graphics family'
-arch=('i686' 'x86_64')
-url='http://freedesktop.org/wiki/Software/vaapi'
+arch=('x86_64')
+url='https://01.org/linuxmedia/vaapi'
license=('MIT')
-depends=('libva')
+depends=('libva' 'libdrm')
+makedepends=('git' 'meson')
replaces=('libva-driver-intel')
-source=(https://freedesktop.org/software/vaapi/releases/$pkgname/$pkgname-$pkgver.tar.bz2)
-sha1sums=('5100f187afc4e39fce5664b96fe11a38faa9afaa')
+source=("git+https://github.com/intel/intel-vaapi-driver.git#tag=${pkgver}"
+ 427.patch)
+sha256sums=('SKIP'
+ 'e51eaf65b1bb09bf62a1b78668da0c268722387cb8eb3c05ec2d7462c651d1c0')
prepare() {
- cd $pkgname-$pkgver
+ cd intel-vaapi-driver
+
+ # https://github.com/intel/intel-vaapi-driver/issues/419
+ patch -Np1 -i ../427.patch
# Only relevant if intel-gpu-tools is installed,
# since then the shaders will be recompiled
sed -i '1s/python$/&2/' src/shaders/gpp.py
+
+ # Fix undefined variable in src/meson.build
+ sed -i 's/2.2.0/2.2.0.0/' meson.build
}
build() {
- cd $pkgname-$pkgver
- ./configure --prefix=/usr
- make
+ arch-meson intel-vaapi-driver build
+ ninja -C build
}
package() {
- cd $pkgname-$pkgver
- make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+ DESTDIR="${pkgdir}" meson install -C build
+ install -Dm 644 intel-vaapi-driver/COPYING -t "${pkgdir}"/usr/share/licenses/libva-intel-driver
}
+
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/libva/PKGBUILD b/abs/extra/libva/PKGBUILD
index b8037c6..a044c09 100644
--- a/abs/extra/libva/PKGBUILD
+++ b/abs/extra/libva/PKGBUILD
@@ -1,36 +1,56 @@
-# $Id$
# Maintainer: Maxime Gauduin <alucryd@archlonux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
pkgname=libva
-pkgver=2.1.0
+pkgver=2.4.0
pkgrel=1
pkgdesc='Video Acceleration (VA) API for Linux'
-arch=('x86_64')
-url='https://01.org/linuxmedia/vaapi'
-license=('MIT')
-depends=('glibc' 'libdrm' 'libgl' 'libx11' 'libxext' 'libxfixes' 'wayland')
-makedepends=('mesa')
-optdepends=('libva-vdpau-driver: backend for Nvidia and AMD cards'
- 'libva-intel-driver: backend for Intel cards')
-provides=('libva-drm.so' 'libva-glx.so' 'libva-wayland.so' 'libva-x11.so' 'libva.so')
-source=("https://github.com/01org/libva/releases/download/${pkgver}/libva-${pkgver}.tar.bz2")
-sha256sums=('f3fa953a11d3210c3a4ee79031abdbe0863d5ce13d9b3f93f315f1eec60a4b0f')
+arch=(x86_64)
+url=https://01.org/linuxmedia/vaapi
+license=(MIT)
+depends=(
+ libdrm
+ libgl
+ libx11
+ libxext
+ libxfixes
+ wayland
+)
+makedepends=(
+ git
+ libglvnd
+ mesa
+ meson
+)
+optdepends=(
+ 'libva-vdpau-driver: backend for Nvidia and AMD cards'
+ 'libva-intel-driver: backend for Intel cards'
+)
+provides=(
+ libva-drm.so
+ libva-glx.so
+ libva-wayland.so
+ libva-x11.so
+ libva.so
+)
+backup=(etc/libva.conf)
+source=(git+https://github.com/intel/libva.git#tag=${pkgver})
+sha256sums=(SKIP)
build() {
- cd libva-${pkgver}
-
- ./configure \
- --prefix='/usr'
- make
+ CFLAGS+=" -DENABLE_VA_MESSAGING" # Option missing
+ arch-meson libva build
+ ninja -C build
}
package() {
- cd libva-${pkgver}
+ DESTDIR="${pkgdir}" meson install -C build
+ install -Dm 644 libva/COPYING -t "${pkgdir}"/usr/share/licenses/libva
- make DESTDIR="${pkgdir}" install
- install -Dm 644 COPYING -t "${pkgdir}"/usr/share/licenses/libva
+ install -Dm 644 /dev/stdin "${pkgdir}"/etc/libva.conf <<END
+LIBVA_MESSAGING_LEVEL=1
+END
}
# vim: ts=2 sw=2 et:
diff --git a/abs/extra/libva/not-finding-wl-drm-interface-with-libglvnd.patch b/abs/extra/libva/not-finding-wl-drm-interface-with-libglvnd.patch
deleted file mode 100644
index 4041e6c..0000000
--- a/abs/extra/libva/not-finding-wl-drm-interface-with-libglvnd.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From b832b37c6a6f7ff69a4ea4656007827a1b7e67e8 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Wed, 15 Feb 2017 15:18:44 +0100
-Subject: [PATCH] Wayland-drm: Fix not finding wl_drm_interface on systems with
- libglvnd
-
-We do not want just any libEGL.so.1 we want mesa's libEGL.so.1 as that
-is the only way which defines the wl_drm_interface symbol we need,
-one systems with libglvnd libEGL.so.1 is a dispatcher library provided
-by libglvnd and the actual mesa libEGL we want is named libEGL_mesa.so.0
-so try that first.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- va/wayland/va_wayland_drm.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/va/wayland/va_wayland_drm.c b/va/wayland/va_wayland_drm.c
-index 958ea85..2ff19f5 100644
---- a/va/wayland/va_wayland_drm.c
-+++ b/va/wayland/va_wayland_drm.c
-@@ -38,7 +38,10 @@
- #include "wayland-drm-client-protocol.h"
-
- /* XXX: Wayland/DRM support currently lives in Mesa libEGL.so.* library */
--#define LIBWAYLAND_DRM_NAME "libEGL.so.1"
-+/* First try the soname of a glvnd enabled mesa build */
-+#define LIBWAYLAND_DRM_NAME "libEGL_mesa.so.0"
-+/* Then fallback to plain libEGL.so.1 (which might not be mesa) */
-+#define LIBWAYLAND_DRM_NAME_FALLBACK "libEGL.so.1"
-
- typedef struct va_wayland_drm_context {
- struct va_wayland_context base;
-@@ -207,8 +210,11 @@ va_wayland_drm_create(VADisplayContextP pDisplayContext)
- vtable->has_prime_sharing = 0;
-
- wl_drm_ctx->handle = dlopen(LIBWAYLAND_DRM_NAME, RTLD_LAZY|RTLD_LOCAL);
-- if (!wl_drm_ctx->handle)
-- return false;
-+ if (!wl_drm_ctx->handle) {
-+ wl_drm_ctx->handle = dlopen(LIBWAYLAND_DRM_NAME_FALLBACK, RTLD_LAZY|RTLD_LOCAL);
-+ if (!wl_drm_ctx->handle)
-+ return false;
-+ }
-
- wl_drm_ctx->drm_interface =
- dlsym(wl_drm_ctx->handle, "wl_drm_interface");
-
diff --git a/abs/extra/libvpx/PKGBUILD b/abs/extra/libvpx/PKGBUILD
index 17af63a..b82ff78 100644
--- a/abs/extra/libvpx/PKGBUILD
+++ b/abs/extra/libvpx/PKGBUILD
@@ -1,20 +1,19 @@
-# $Id$
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
pkgname=libvpx
-pkgver=1.6.1
+pkgver=1.7.0
pkgrel=1
pkgdesc='VP8 and VP9 codec'
-arch=('i686' 'x86_64')
+arch=('x86_64')
url='http://www.webmproject.org/'
license=('BSD')
depends=('glibc' 'gcc-libs')
makedepends=('yasm' 'git')
provides=('libvpx.so')
source=("libvpx-${pkgver}.tar.gz::https://github.com/webmproject/libvpx/archive/v${pkgver}.tar.gz")
-sha256sums=('cda8bb6f0e4848c018177d3a576fa83ed96d762554d7010fe4cfb9d70c22e588')
+sha256sums=('1fec931eb5c94279ad219a5b6e0202358e94a93a90cfb1603578c326abfc1238')
build() {
cd libvpx-${pkgver}
diff --git a/abs/extra/llvm/0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch b/abs/extra/llvm/0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
deleted file mode 100644
index 7398b50..0000000
--- a/abs/extra/llvm/0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From fedcf1d9691bf669d8cd771a032e851d8247aff9 Mon Sep 17 00:00:00 2001
-From: Evangelos Foutras <evangelos@foutrelis.com>
-Date: Thu, 6 Jul 2017 18:53:05 +0300
-Subject: [PATCH 1/2] GCC compatibility: Ignore the -fno-plt flag
-
----
- include/clang/Driver/Options.td | 1 +
- test/Driver/clang_f_opts.c | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
-index 05dc9d7eb3..c93e6cc08c 100644
---- a/include/clang/Driver/Options.td
-+++ b/include/clang/Driver/Options.td
-@@ -2505,6 +2505,7 @@ defm ivopts : BooleanFFlag<"ivopts">, Group<clang_ignored_gcc_optimization_f_Gro
- defm non_call_exceptions : BooleanFFlag<"non-call-exceptions">, Group<clang_ignored_f_Group>;
- defm peel_loops : BooleanFFlag<"peel-loops">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm permissive : BooleanFFlag<"permissive">, Group<clang_ignored_f_Group>;
-+defm plt : BooleanFFlag<"plt">, Group<clang_ignored_f_Group>;
- defm prefetch_loop_arrays : BooleanFFlag<"prefetch-loop-arrays">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm printf : BooleanFFlag<"printf">, Group<clang_ignored_f_Group>;
- defm profile : BooleanFFlag<"profile">, Group<clang_ignored_f_Group>;
-diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c
-index c17cec6eba..d9480c915e 100644
---- a/test/Driver/clang_f_opts.c
-+++ b/test/Driver/clang_f_opts.c
-@@ -277,6 +277,7 @@
- // RUN: -fno-caller-saves -fcaller-saves \
- // RUN: -fno-reorder-blocks -freorder-blocks \
- // RUN: -fno-schedule-insns2 -fschedule-insns2 \
-+// RUN: -fno-plt -fplt \
- // RUN: -fno-stack-check \
- // RUN: -fno-check-new -fcheck-new \
- // RUN: -ffriend-injection \
---
-2.14.1
-
diff --git a/abs/extra/llvm/PKGBUILD b/abs/extra/llvm/PKGBUILD
index 64ba5b2..d6e630c 100644
--- a/abs/extra/llvm/PKGBUILD
+++ b/abs/extra/llvm/PKGBUILD
@@ -1,80 +1,45 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
-# Contributor: Sebastian Nowicki <sebnow@gmail.com>
-# Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us>
-# Contributor: Tobias Kieslich <tobias@justdreams.de>
-# Contributor: Geoffroy Carrier <geoffroy.carrier@aur.archlinux.org>
-# Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk>
-# Contributor: Roberto Alsina <ralsina@kde.org>
-# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
-pkgname=('llvm' 'llvm-libs' 'llvm-ocaml' 'lld' 'lldb' 'clang' 'clang-tools-extra')
-pkgver=5.0.1
+pkgname=('llvm' 'llvm-libs' 'llvm-ocaml')
+pkgver=7.0.1
pkgrel=2
-_ocaml_ver=4.06.0
+_ocaml_ver=4.07.1
arch=('x86_64')
-url="http://llvm.org/"
+url="https://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
-makedepends=('cmake' 'libffi' 'python2' "ocaml=$_ocaml_ver" 'python-sphinx'
- 'ocaml-ctypes' 'ocaml-findlib' 'libedit' 'swig')
-# Build 32-bit compiler-rt libraries on x86_64 (FS#41911)
-makedepends_x86_64=('lib32-gcc-libs')
+makedepends=('cmake' 'ninja' 'libffi' 'libedit' 'ncurses' 'libxml2' 'python-sphinx'
+ "ocaml=$_ocaml_ver" 'ocaml-ctypes' 'ocaml-findlib')
options=('staticlibs')
source=(https://releases.llvm.org/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
- https://releases.llvm.org/$pkgver/cfe-$pkgver.src.tar.xz{,.sig}
- https://releases.llvm.org/$pkgver/clang-tools-extra-$pkgver.src.tar.xz{,.sig}
- https://releases.llvm.org/$pkgver/compiler-rt-$pkgver.src.tar.xz{,.sig}
- https://releases.llvm.org/$pkgver/lld-$pkgver.src.tar.xz{,.sig}
- https://releases.llvm.org/$pkgver/lldb-$pkgver.src.tar.xz{,.sig}
- 0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
- 0002-Enable-SSP-and-PIE-by-default.patch
- disable-llvm-symbolizer-test.patch
+ rusty-discriminator-thingy.patch
+ add-discriminator-to-debuginfo-test.patch
llvm-config.h)
-sha256sums=('5fa7489fc0225b11821cab0362f5813a05f2bcf2533e8a4ea9c9c860168807b0'
+sha256sums=('a38dfc4db47102ec79dcc2aa61e93722c5f6f06f0a961073bd84b78fb949419b'
'SKIP'
- '135f6c9b0cd2da1aff2250e065946258eb699777888df39ca5a5b4fe5e23d0ff'
- 'SKIP'
- '9aada1f9d673226846c3399d13fab6bba4bfd38bcfe8def5ee7b0ec24f8cd225'
- 'SKIP'
- '4edd1417f457a9b3f0eb88082530490edf3cf6a7335cdce8ecbc5d3e16a895da'
- 'SKIP'
- 'd5b36c0005824f07ab093616bdff247f3da817cae2c51371e1d1473af717d895'
- 'SKIP'
- 'b7c1c9e67975ca219089a3a6a9c77c2d102cead2dc38264f2524aa3326da376a'
- 'SKIP'
- 'a1ba7fb859ac157c4b4342435cd656e29b1e1d9bddcb8ae0158a91c0a8ba6203'
- '186f2d10b013395f2dd6e1fd3baf4961a2e40c403f115517c9b253682934f50f'
- '6fff47ab5ede79d45fe64bb4903b7dfc27212a38e6cd5d01e60ebd24b7557359'
+ '4abaef845abb899628deb62a3f184fb8433555620648150dc346a74ef134fd68'
+ '1d2ea3a07e94f4c826706a452e93ed8a2301b5eed5715d22eab19a5ea3f3d0a7'
'597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
-validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D'
- '11E521D646982372EB577A1F8F0871F202119294')
+validpgpkeys+=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg <hans@chromium.org>
+validpgpkeys+=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
prepare() {
cd "$srcdir/llvm-$pkgver.src"
mkdir build
- mv "$srcdir/cfe-$pkgver.src" tools/clang
- mv "$srcdir/clang-tools-extra-$pkgver.src" tools/clang/tools/extra
- mv "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
- mv "$srcdir/lld-$pkgver.src" tools/lld
- mv "$srcdir/lldb-$pkgver.src" tools/lldb
-
- # Disable test that fails when compiled as PIE
- # https://bugs.llvm.org/show_bug.cgi?id=31870
- patch -Np1 <../disable-llvm-symbolizer-test.patch
-
- # Enable SSP and PIE by default
- patch -Np1 -d tools/clang <../0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
- patch -Np1 -d tools/clang <../0002-Enable-SSP-and-PIE-by-default.patch
+ # Fix rust 1.32 segfaults with LTO being enabled
+ # https://github.com/rust-lang/rust/issues/54614
+ patch -Np1 -i ../rusty-discriminator-thingy.patch
+ patch -Np1 -i ../add-discriminator-to-debuginfo-test.patch
}
build() {
cd "$srcdir/llvm-$pkgver.src/build"
- cmake \
+ cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
+ -DLLVM_HOST_TRIPLE=$CHOST \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_INSTALL_UTILS=ON \
@@ -86,30 +51,28 @@ build() {
-DLLVM_ENABLE_DOXYGEN=OFF \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
- -DLLVM_BINUTILS_INCDIR=/usr/include \
- ..
-
- make
- make ocaml_doc
-
- # Disable automatic installation of components that go into subpackages
- sed -i '/\(clang\|lld\|lldb\)\/cmake_install.cmake/d' tools/cmake_install.cmake
- sed -i '/extra\/cmake_install.cmake/d' tools/clang/tools/cmake_install.cmake
- sed -i '/compiler-rt\/cmake_install.cmake/d' projects/cmake_install.cmake
+ -DLLVM_BINUTILS_INCDIR=/usr/include
+ ninja all ocaml_doc
}
check() {
cd "$srcdir/llvm-$pkgver.src/build"
- make check-{llvm,clang,clang-tools,lld}
+ ninja check
}
package_llvm() {
- pkgdesc="Low Level Virtual Machine"
+ pkgdesc="Collection of modular and reusable compiler and toolchain technologies"
depends=('llvm-libs' 'perl')
+ optdepends=('python-setuptools: for using lit (LLVM Integrated Tester)')
- cd "$srcdir/llvm-$pkgver.src"
+ cd "$srcdir/llvm-$pkgver.src/build"
- make -C build DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja install
+
+ # Include lit for running lit-based tests in other projects
+ pushd ../utils/lit
+ python3 setup.py install --root="$pkgdir" -O1
+ popd
# Remove documentation sources
rm -r "$pkgdir"/usr/share/doc/$pkgname/html/{_sources,.buildinfo}
@@ -130,12 +93,12 @@ package_llvm() {
cp "$srcdir/llvm-config.h" "$pkgdir/usr/include/llvm/Config/llvm-config.h"
fi
- install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_llvm-libs() {
- pkgdesc="Low Level Virtual Machine (runtime libraries)"
- depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses')
+ pkgdesc="LLVM runtime libraries"
+ depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses' 'libxml2')
install -d "$pkgdir/usr/lib"
cp -P \
@@ -156,111 +119,11 @@ package_llvm-ocaml() {
pkgdesc="OCaml bindings for LLVM"
depends=('llvm' "ocaml=$_ocaml_ver" 'ocaml-ctypes')
- cd "$srcdir/llvm-$pkgver.src"
-
install -d "$pkgdir"/{usr/lib,usr/share/doc/$pkgname}
cp -a "$srcdir/ocaml.lib" "$pkgdir/usr/lib/ocaml"
cp -a "$srcdir/ocaml.doc" "$pkgdir/usr/share/doc/$pkgname/html"
- install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
-
-package_lld() {
- pkgdesc="Linker from the LLVM project"
- url="http://lld.llvm.org/"
- depends=('llvm-libs')
-
- cd "$srcdir/llvm-$pkgver.src"
-
- make -C build/tools/lld DESTDIR="$pkgdir" install
-
- # Remove documentation sources
- rm -r "$pkgdir"/usr/share/doc/$pkgname/html/{_sources,.buildinfo}
-
- install -Dm644 tools/$pkgname/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
-
-package_lldb() {
- pkgdesc="Next generation, high-performance debugger"
- url="http://lldb.llvm.org/"
- depends=('llvm-libs' 'libxml2' 'python2' 'python2-six')
-
- cd "$srcdir/llvm-$pkgver.src"
-
- make -C build/tools/lldb DESTDIR="$pkgdir" install
-
- # https://bugs.archlinux.org/task/50759
- sed -i "/import_module('_lldb')/s/_lldb/lldb.&/" \
- "$pkgdir/usr/lib/python2.7/site-packages/lldb/__init__.py"
-
- # Remove bundled six library
- rm "$pkgdir/usr/lib/python2.7/site-packages/six.py"
-
- # Compile Python scripts
- python2 -m compileall "$pkgdir/usr/lib/python2.7/site-packages/lldb"
- python2 -O -m compileall "$pkgdir/usr/lib/python2.7/site-packages/lldb"
-
- install -Dm644 tools/$pkgname/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
-
-package_clang() {
- pkgdesc="C language family frontend for LLVM"
- url="http://clang.llvm.org/"
- depends=('llvm-libs' 'gcc' 'libxml2')
- optdepends=('openmp: OpenMP support in clang with -fopenmp'
- 'python2: for scan-view and git-clang-format')
- provides=("clang-analyzer=$pkgver")
- conflicts=('clang-analyzer')
- replaces=('clang-analyzer')
-
- cd "$srcdir/llvm-$pkgver.src"
-
- make -C build/tools/clang DESTDIR="$pkgdir" install
- make -C build/projects/compiler-rt DESTDIR="$pkgdir" install
-
- # Remove documentation sources
- rm -r "$pkgdir"/usr/share/doc/$pkgname/html/{_sources,.buildinfo}
-
- # Move analyzer scripts out of /usr/libexec
- mv "$pkgdir"/usr/libexec/{ccc,c++}-analyzer "$pkgdir/usr/lib/clang/"
- rmdir "$pkgdir/usr/libexec"
- sed -i 's|libexec|lib/clang|' "$pkgdir/usr/bin/scan-build"
-
- # Install Python bindings
- install -d "$pkgdir/usr/lib/python2.7/site-packages"
- cp -a tools/clang/bindings/python/clang "$pkgdir/usr/lib/python2.7/site-packages/"
-
- # Use Python 2
- sed -i 's|/usr/bin/env python|&2|' \
- "$pkgdir/usr/bin/scan-view" \
- "$pkgdir/usr/bin/git-clang-format" \
- "$pkgdir/usr/share/$pkgname/clang-format-diff.py"
-
- # Compile Python scripts
- python2 -m compileall "$pkgdir"
- python2 -O -m compileall "$pkgdir"
-
- install -Dm644 tools/$pkgname/LICENSE.TXT \
- "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
-
-package_clang-tools-extra() {
- pkgdesc="Extra tools built using clang's tooling APIs"
- url="http://clang.llvm.org/"
- depends=('clang')
-
- cd "$srcdir/llvm-$pkgver.src"
-
- make -C build/tools/clang/tools/extra DESTDIR="$pkgdir" install
-
- # Remove documentation sources
- rm -r "$pkgdir"/usr/share/doc/clang-tools/html/{_sources,.buildinfo}
-
- # Use Python 2
- sed -i 's|/usr/bin/env python|&2|' \
- "$pkgdir"/usr/share/clang/{clang-tidy-diff,run-clang-tidy,run-find-all-symbols}.py
-
- install -Dm644 tools/clang/tools/extra/LICENSE.TXT \
+ install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
diff --git a/abs/extra/llvm/add-discriminator-to-debuginfo-test.patch b/abs/extra/llvm/add-discriminator-to-debuginfo-test.patch
new file mode 100644
index 0000000..aa67d52
--- /dev/null
+++ b/abs/extra/llvm/add-discriminator-to-debuginfo-test.patch
@@ -0,0 +1,25 @@
+From cc1f2a595ead516812a6c50398f0f3480ebe031f Mon Sep 17 00:00:00 2001
+From: Jonas Devlieghere <jonas@devlieghere.com>
+Date: Fri, 21 Sep 2018 12:28:44 +0000
+Subject: [PATCH] [test] Fix Assembler/debug-info.ll
+
+Update Assembler/debug-info.ll to contain discriminator.
+
+git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342727 91177308-0d34-0410-b5e6-96231b3b80d8
+---
+ test/Assembler/debug-info.ll | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/Assembler/debug-info.ll b/test/Assembler/debug-info.ll
+index 4404b741d343..d54dba07ac1e 100644
+--- a/test/Assembler/debug-info.ll
++++ b/test/Assembler/debug-info.ll
+@@ -83,7 +83,7 @@
+ ; CHECK-NEXT: !32 = !DIFile(filename: "file", directory: "dir", checksumkind: CSK_MD5, checksum: "000102030405060708090a0b0c0d0e0f")
+ !35 = !DIFile(filename: "file", directory: "dir", checksumkind: CSK_MD5, checksum: "000102030405060708090a0b0c0d0e0f")
+
+-; CHECK-NEXT: !33 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !14, size: 64)
++; CHECK-NEXT: !33 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !14, size: 64, discriminator: !34)
+ ; CHECK-NEXT: !34 = !DIDerivedType(tag: DW_TAG_member, scope: !33, baseType: !35, size: 64, align: 64, flags: DIFlagArtificial)
+ ; CHECK-NEXT: !35 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
+ !36 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !16, size: 64, discriminator: !37)
diff --git a/abs/extra/llvm/disable-llvm-symbolizer-test.patch b/abs/extra/llvm/disable-llvm-symbolizer-test.patch
deleted file mode 100644
index f949169..0000000
--- a/abs/extra/llvm/disable-llvm-symbolizer-test.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: Silent a test failing on yakkety amd64
- /tmp/buildd/llvm-toolchain-snapshot-4.0~svn279801/test/tools/llvm-symbolizer/print_context.c:16:11: error: expected string not found in input
- // CHECK: inc
- ^
- <stdin>:1:1: note: scanning from here
- _fini
- ^
- <stdin>:1:3: note: possible intended match here
- _fini
- ^
-Author: Sylvestre <sylvestre@debian.org>
-Last-Update: 2016-08-26
-
-Index: llvm-toolchain-3.9-3.9~+rc1/test/tools/llvm-symbolizer/print_context.c
-===================================================================
---- llvm-toolchain-3.9-3.9~+rc1.orig/test/tools/llvm-symbolizer/print_context.c
-+++ llvm-toolchain-3.9-3.9~+rc1/test/tools/llvm-symbolizer/print_context.c
-@@ -1,7 +1,7 @@
- // REQUIRES: x86_64-linux
- // RUN: %host_cc -O0 -g %s -o %t 2>&1
- // RUN: %t 2>&1 | llvm-symbolizer -print-source-context-lines=5 -obj=%t | FileCheck %s
--
-+// XFAIL: *
- #include <stdio.h>
-
- int inc(int a) {
diff --git a/abs/extra/llvm/rusty-discriminator-thingy.patch b/abs/extra/llvm/rusty-discriminator-thingy.patch
new file mode 100644
index 0000000..fb7ef03
--- /dev/null
+++ b/abs/extra/llvm/rusty-discriminator-thingy.patch
@@ -0,0 +1,57 @@
+From da1fb72bb305d6bc1f3899d541414146934bf80f Mon Sep 17 00:00:00 2001
+From: Jonas Devlieghere <jonas@devlieghere.com>
+Date: Fri, 21 Sep 2018 12:03:14 +0000
+Subject: [PATCH] Ensure that variant part discriminator is read by
+ MetadataLoader
+
+https://reviews.llvm.org/D42082 introduced variant parts to debug info
+in LLVM. Subsequent work on the Rust compiler has found a bug in that
+patch; namely, there is a path in MetadataLoader that fails to restore
+the discriminator.
+
+This patch fixes the bug.
+
+Patch by: Tom Tromey
+
+Differential revision: https://reviews.llvm.org/D52340
+
+git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342725 91177308-0d34-0410-b5e6-96231b3b80d8
+---
+ lib/Bitcode/Reader/MetadataLoader.cpp | 2 +-
+ test/Assembler/debug-variant-discriminator.ll | 14 ++++++++++++++
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+ create mode 100644 test/Assembler/debug-variant-discriminator.ll
+
+diff --git a/lib/Bitcode/Reader/MetadataLoader.cpp b/lib/Bitcode/Reader/MetadataLoader.cpp
+index 3fe7d2205631..4781cfe3dea6 100644
+--- a/lib/Bitcode/Reader/MetadataLoader.cpp
++++ b/lib/Bitcode/Reader/MetadataLoader.cpp
+@@ -1313,7 +1313,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
+ (Context, Tag, Name, File, Line, Scope, BaseType,
+ SizeInBits, AlignInBits, OffsetInBits, Flags,
+ Elements, RuntimeLang, VTableHolder, TemplateParams,
+- Identifier));
++ Identifier, Discriminator));
+ if (!IsNotUsedInTypeRef && Identifier)
+ MetadataList.addTypeRef(*Identifier, *cast<DICompositeType>(CT));
+
+diff --git a/test/Assembler/debug-variant-discriminator.ll b/test/Assembler/debug-variant-discriminator.ll
+new file mode 100644
+index 000000000000..5be001cad6be
+--- /dev/null
++++ b/test/Assembler/debug-variant-discriminator.ll
+@@ -0,0 +1,14 @@
++; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
++; RUN: verify-uselistorder %s
++
++; CHECK: !named = !{!0, !1, !2}
++!named = !{!0, !1, !2}
++
++; CHECK: !0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer")
++; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2)
++; CHECK-NEXT: !2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial)
++; CHECK-NEXT: !3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
++!0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer")
++!1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2)
++!2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial)
++!3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
diff --git a/abs/extra/mercurial/PKGBUILD b/abs/extra/mercurial/PKGBUILD
new file mode 100644
index 0000000..d485183
--- /dev/null
+++ b/abs/extra/mercurial/PKGBUILD
@@ -0,0 +1,62 @@
+# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=mercurial
+pkgver=4.8.2
+pkgrel=1
+pkgdesc='A scalable distributed SCM tool'
+arch=(x86_64)
+url="https://www.mercurial-scm.org/"
+license=(GPL)
+depends=(python2)
+optdepends=('tk: for the hgk GUI')
+backup=(etc/mercurial/hgrc)
+validpgpkeys=(2BCCE14F5C6725AA2EA8AEB7B9C9DC824AA5BDD5
+ 3A8155163D0E20A530FCB78647A67FFAA346AACE)
+source=(https://www.mercurial-scm.org/release/${pkgname}-${pkgver}.tar.gz{,.asc}
+ mercurial.profile)
+sha256sums=('6c202cb9cf05e63b86477ebf84d6475eb10b4022ac2cd3a7481fb36d9c45fdb2'
+ 'SKIP'
+ '87427151713e689cd87dc50d50c048e0e58285815e4eb61962b50583532cbde5')
+
+prepare() {
+ cd $pkgname-$pkgver
+ sed -i -e 's#env python#env python2#' mercurial/lsprof.py
+}
+
+build() {
+ cd $pkgname-$pkgver/contrib/chg
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver
+ python2 setup.py install --root="$pkgdir" --optimize=1
+
+ install -d "$pkgdir/usr/share/man/"{man1,man5}
+ install -m644 doc/hg.1 "$pkgdir/usr/share/man/man1"
+ install -m644 doc/{hgrc.5,hgignore.5} "$pkgdir/usr/share/man/man5"
+ install -m755 contrib/hgk "$pkgdir/usr/bin"
+ install -m644 -D contrib/zsh_completion "$pkgdir/usr/share/zsh/site-functions/_hg"
+ install -m644 -D contrib/bash_completion "$pkgdir/usr/share/bash-completion/completions/hg"
+ install -d "$pkgdir/usr/share/emacs/site-lisp"
+ install -m644 contrib/{mq.el,mercurial.el} "$pkgdir/usr/share/emacs/site-lisp"
+
+ install -Dm644 contrib/vim/HGAnnotate.vim \
+ "$pkgdir/usr/share/vim/vimfiles/syntax/HGAnnotate.vim"
+
+ # set some variables
+ install -m755 -d "$pkgdir/etc/profile.d"
+ install -m755 "$srcdir/mercurial.profile" "$pkgdir/etc/profile.d/mercurial.sh"
+
+ # FS#38825 - Add certs config to package
+ install -m755 -d "$pkgdir/etc/mercurial"
+ cat <<-EOF > "$pkgdir/etc/mercurial/hgrc"
+ [web]
+ cacerts = /etc/ssl/certs/ca-certificates.crt
+ EOF
+
+ cd contrib/chg
+ make DESTDIR="$pkgdir" PREFIX=/usr install
+}
diff --git a/abs/extra/mercurial/mercurial.profile b/abs/extra/mercurial/mercurial.profile
new file mode 100644
index 0000000..fc96182
--- /dev/null
+++ b/abs/extra/mercurial/mercurial.profile
@@ -0,0 +1 @@
+export HG=/usr/bin/hg
diff --git a/abs/extra/meson/0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch b/abs/extra/meson/0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch
deleted file mode 100644
index 973912b..0000000
--- a/abs/extra/meson/0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 89d4decc9cdda01590c2a734c0f58924bcf30777 Mon Sep 17 00:00:00 2001
-Message-Id: <89d4decc9cdda01590c2a734c0f58924bcf30777.1517146929.git.jan.steffens@gmail.com>
-From: Dylan Baker <dylan@pnwbakers.com>
-Date: Tue, 19 Dec 2017 20:05:24 -0800
-Subject: [PATCH 1/2] tests: skip objc nsstring test if gnustep is not
- installed
-
----
- test cases/objc/2 nsstring/meson.build | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/test cases/objc/2 nsstring/meson.build b/test cases/objc/2 nsstring/meson.build
-index a877d746..7f2483f4 100644
---- a/test cases/objc/2 nsstring/meson.build
-+++ b/test cases/objc/2 nsstring/meson.build
-@@ -5,7 +5,10 @@ if host_machine.system() == 'darwin'
- elif host_machine.system() == 'cygwin'
- error('MESON_SKIP_TEST GNUstep is not packaged for Cygwin.')
- else
-- dep = dependency('gnustep')
-+ dep = dependency('gnustep', required : false)
-+ if not dep.found()
-+ error('MESON_SKIP_TEST: GNUstep is not installed')
-+ endif
- if host_machine.system() == 'linux' and meson.get_compiler('objc').get_id() == 'clang'
- error('MESON_SKIP_TEST: GNUstep is broken on Linux with Clang')
- endif
---
-2.16.1
-
diff --git a/abs/extra/meson/4878.patch b/abs/extra/meson/4878.patch
new file mode 100644
index 0000000..4c85552
--- /dev/null
+++ b/abs/extra/meson/4878.patch
@@ -0,0 +1,26 @@
+From c5544aea8d8480262b9792ac85b8e61d1fb08f74 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin.noel@collabora.com>
+Date: Mon, 4 Feb 2019 13:49:01 +0100
+Subject: [PATCH] vala: Support position-independent executables
+
+---
+ mesonbuild/compilers/vala.py | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/mesonbuild/compilers/vala.py b/mesonbuild/compilers/vala.py
+index e64d57f366..5303298a62 100644
+--- a/mesonbuild/compilers/vala.py
++++ b/mesonbuild/compilers/vala.py
+@@ -49,6 +49,12 @@ def get_compile_only_args(self):
+ def get_pic_args(self):
+ return []
+
++ def get_pie_args(self):
++ return []
++
++ def get_pie_link_args(self):
++ return []
++
+ def get_always_args(self):
+ return ['-C']
+
diff --git a/abs/extra/meson/PKGBUILD b/abs/extra/meson/PKGBUILD
index 4f93834..dd5e7ef 100644
--- a/abs/extra/meson/PKGBUILD
+++ b/abs/extra/meson/PKGBUILD
@@ -3,33 +3,35 @@
# Contributor: Anatol Pomozov <anatol dot pomozov at gmail>
pkgname=meson
-pkgver=0.44.1
-pkgrel=1
+pkgver=0.49.2
+pkgrel=2
pkgdesc='High productivity build system'
-url='http://mesonbuild.com/'
+url='https://mesonbuild.com/'
arch=('any')
license=('Apache')
-depends=('python' 'ninja')
-makedepends=('python-setuptools')
-checkdepends=('gcc-objc' 'vala' 'rust' 'gcc-fortran' 'mono' 'boost' 'qt4' 'qt5-base' 'git'
- 'cython' 'gtkmm3' 'gtest' 'gmock' 'protobuf' 'wxgtk' 'python-gobject' 'gobject-introspection'
+depends=('python-setuptools' 'ninja')
+checkdepends=('gcc-objc' 'vala' 'rust' 'gcc-fortran' 'mono' 'boost' 'qt4' 'qt5-base' 'git' 'cython'
+ 'gtkmm3' 'gtest' 'gmock' 'protobuf' 'wxgtk' 'python-gobject' 'gobject-introspection'
'itstool' 'gtk3' 'java-environment=8' 'gtk-doc' 'llvm' 'clang' 'sdl2' 'graphviz'
- 'doxygen' 'vulkan-validation-layers' 'openmpi' 'openssh' 'mercurial' 'gtk-sharp-2'
- 'qt5-tools' 'libwmf' 'dmd' 'valgrind')
+ 'doxygen' 'vulkan-validation-layers' 'openssh' 'mercurial' 'gtk-sharp-2' 'qt5-tools'
+ 'libwmf' 'dmd' 'valgrind')
source=(https://github.com/mesonbuild/meson/releases/download/${pkgver}/meson-${pkgver}.tar.gz{,.asc}
- 0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch
+ 4878.patch
arch-meson)
-sha512sums=('1ecccccfa24ec2c5c144f8c13fd95d250b59cb22b79676a2a1a6f9ed30a7b08adb71d5882b2d4421d07689ad6dd6d6aef139ac33f628e55a1d428cbc40b4d93e'
+sha512sums=('d07a5dfd699f1e4b00af39c377ec186c91718d9595cb0ab506b4b40c0c63ddd14eccbe8afb446635272c431e2a78032888be0bc8f6064044da53e8c0b5f7be3f'
'SKIP'
- '04a0f113ba5f1ae57591fad3f5ecf812ef88b8809b4ffe063e82f6548e728a1a7bd51c171a948873884c2631fc10a9cd141f56de22cd7cf766cdb74996840eec'
- 'e901f87f3ee1baa7b9aedb79bd5c9e50898a5695ac938f7f8420d8e81f526a09f07ceedadb65975437efa5a68fcf581110a040f579f2530437d1e6eb5addea76')
+ 'ff1326c7b56da98eab615b40e07cba86d6ceee18d29e8b5c57ccf73980a7a466c8e5695cc0b96a36330cd0d51e52b8fed08456ebea6763edb736ae7116be2f4b'
+ 'f451f8a7ef9cf1dd724c2ce20bb85a3f1611b87b2e7a17ef0fdbe8ab82a67389f818ea30a5adfe8413143e4eac77ea2e0b8234b5b2466b41a892e2bd0435376c')
validpgpkeys=('95181F4EED14FDF4E41B518D3BF4693BFEEB9428') # Jussi Pakkanen <jpakkane@gmail.com>
prepare() {
cd ${pkgname}-${pkgver}
- # Skip gnustep tests
- patch -Np1 -i ../0001-tests-skip-objc-nsstring-test-if-gnustep-is-not-inst.patch
+ # https://github.com/mesonbuild/meson/issues/4884
+ patch -Np1 -i ../4878.patch
+
+ # Succeeds for us?
+ mv 'test cases/failing/85 gtest dependency with version' 'test cases/frameworks/'
}
build() {
@@ -40,9 +42,6 @@ build() {
check() (
cd ${pkgname}-${pkgver}
- # --as-needed breaks openmpi linking
- LDFLAGS="${LDFLAGS/,--as-needed/}"
-
# set for debug output
#export MESON_PRINT_TEST_OUTPUT=1
@@ -54,9 +53,9 @@ package() {
cd ${pkgname}-${pkgver}
python setup.py install --root="${pkgdir}" --optimize=1 --skip-build
- for _f in data/syntax-highlighting/vim/*/*; do
- install -Dt "${pkgdir}/usr/share/vim/vimfiles/$(basename "$(dirname "$_f")")" -m644 "$_f"
- done
+ install -d "${pkgdir}/usr/share/vim/vimfiles"
+ cp -rt "${pkgdir}/usr/share/vim/vimfiles" data/syntax-highlighting/vim/*/
+
install -Dt "${pkgdir}/usr/share/emacs/site-lisp" -m644 data/syntax-highlighting/emacs/*
install -Dt "${pkgdir}/usr/share/zsh/site-functions" -m644 data/shell-completions/zsh/*
diff --git a/abs/extra/meson/arch-meson b/abs/extra/meson/arch-meson
index c4a9e7c..695a947 100644
--- a/abs/extra/meson/arch-meson
+++ b/abs/extra/meson/arch-meson
@@ -1,21 +1,13 @@
#!/bin/bash -ex
-# Meson wrapper for Arch Linux packaging
+# Highly opinionated wrapper for Arch Linux packaging
exec meson setup \
- --prefix /usr \
- --libdir /usr/lib \
- --libexecdir /usr/lib \
- --bindir /usr/bin \
- --sbindir /usr/bin \
- --includedir /usr/include \
- --datadir /usr/share \
- --mandir /usr/share/man \
- --infodir /usr/share/info \
- --localedir /usr/share/locale \
- --sysconfdir /etc \
- --localstatedir /var \
- --sharedstatedir /var/lib \
- --buildtype release \
- --wrap-mode nofallback \
- "$@" \
- -D b_lto=true
+ --prefix /usr \
+ --libexecdir lib \
+ --sbindir bin \
+ --buildtype plain \
+ --auto-features enabled \
+ --wrap-mode nodownload \
+ -D b_lto=true \
+ -D b_pie=true \
+ "$@"
diff --git a/abs/extra/ninja/PKGBUILD b/abs/extra/ninja/PKGBUILD
index ba37b3f..bc91cad 100644
--- a/abs/extra/ninja/PKGBUILD
+++ b/abs/extra/ninja/PKGBUILD
@@ -1,20 +1,19 @@
-# $Id$
# Maintainer: Anatol Pomozov <anatol.pomozov@gmail.com>
# Contributor: Filip Brcic <brcha@gna.org>
# Contributor: Mika Fischer <mika.fischer@zoopnet.de>
# Contributor: Gergely Imreh <imrehgATgmailDOTcom>
pkgname=ninja
-pkgver=1.8.2
+pkgver=1.9.0
pkgrel=1
pkgdesc='Small build system with a focus on speed'
-arch=(i686 x86_64)
+arch=(x86_64)
url='https://ninja-build.org/'
license=(Apache)
depends=(gcc-libs)
-makedepends=(python2 re2c emacs)
+makedepends=(python2 re2c emacs-nox)
source=($pkgname-$pkgver.zip::https://github.com/martine/ninja/archive/v$pkgver.zip)
-sha1sums=('7d252d8deeefd6972080f146a528fad76698616c')
+sha1sums=('8dc0fe67796e1c50a00f9542af41021286977bde')
build() {
cd ninja-$pkgver
@@ -28,7 +27,6 @@ check() {
python2 ./configure.py
./ninja ninja_test
- ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
}
package() {
diff --git a/abs/extra/ocaml-ctypes/PKGBUILD b/abs/extra/ocaml-ctypes/PKGBUILD
index df374a8..d348803 100644
--- a/abs/extra/ocaml-ctypes/PKGBUILD
+++ b/abs/extra/ocaml-ctypes/PKGBUILD
@@ -1,19 +1,18 @@
-# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Armin K. <krejzi at email dot com>
pkgname=ocaml-ctypes
-pkgver=0.11.5
+pkgver=0.14.0
pkgrel=2
pkgdesc="Library for binding to C libraries using pure OCaml"
arch=('x86_64')
url="https://github.com/ocamllabs/ocaml-ctypes"
license=('MIT')
-depends=('ocaml=4.06.0' 'libffi')
+depends=('ocaml>=4.07.0' 'libffi' 'ocaml-integers')
makedepends=('ocaml-findlib' 'ocaml-compiler-libs')
options=('!strip' '!makeflags')
source=($pkgname-$pkgver.tar.gz::https://github.com/ocamllabs/ocaml-ctypes/archive/$pkgver.tar.gz)
-sha256sums=('ee0f9a61cdc9bd3de7dc6f605d556533536e27694f5e2ea9bf25f76f74f68f98')
+sha256sums=('e97aea533b3ce254747dcec39c92f0ca74859b9fe29533d2f391598105693a7f')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/abs/extra/ocaml-findlib/PKGBUILD b/abs/extra/ocaml-findlib/PKGBUILD
index efe122f..110dff0 100644
--- a/abs/extra/ocaml-findlib/PKGBUILD
+++ b/abs/extra/ocaml-findlib/PKGBUILD
@@ -1,4 +1,3 @@
-# $Id$
# Maintainer: Alexander F Rødseth <xyproto@archlinux.org>
# Contributor: Lukas Fleischer <lfleischer@archlinux.org>
# Contributor: Thomas S Hatch <thatch45@gmail.com>
@@ -8,16 +7,15 @@
# Contributor: Alif <alive4ever@live.com>
pkgname=ocaml-findlib
-pkgver=1.7.1
-pkgrel=1
+pkgver=1.8.0
+pkgrel=3
pkgdesc='OCaml package manager'
-arch=('x86_64' 'i686')
+arch=('x86_64')
url='http://projects.camlcity.org/projects/findlib.html'
license=('MIT')
-depends=('ocaml')
-makedepends=('setconf')
+depends=('ocaml-compiler-libs')
source=("http://download.camlcity.org/download/findlib-$pkgver.tar.gz")
-sha256sums=('5d4b9a79e9abf8be0b509f6b8cf5696221cbe14fa2fbb2bb352342755fd15eef')
+sha256sums=('2b7b7d6d65bb0f3f8a2c51c63c02b0bcf1fea4c23513f866140dc7dc24fe27ad')
options=('staticlibs' '!strip' 'zipman' '!makeflags')
build() {
@@ -36,11 +34,8 @@ package () {
make prefix="$pkgdir" install
- # Add a directory to the path for compatibility with old-style packages
- #setconf "$pkgdir/etc/findlib.conf" path='"/usr/lib/ocaml:/usr/lib/ocaml-site-lib"'
-
- install -m755 src/findlib/ocamlfind_opt "$pkgdir/usr/bin/"
+ install -Dm755 src/findlib/ocamlfind_opt "$pkgdir/usr/bin/ocamlfind_opt"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
-# vim:set ts=2 sw=2 et:
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/ocaml-findlib/externalmeta6.patch b/abs/extra/ocaml-findlib/externalmeta6.patch
new file mode 100644
index 0000000..7dbe9aa
--- /dev/null
+++ b/abs/extra/ocaml-findlib/externalmeta6.patch
@@ -0,0 +1,13 @@
+Index: findlib-1.7.2/configure
+===================================================================
+--- findlib-1.7.2.orig/configure
++++ findlib-1.7.2/configure
+@@ -557,7 +557,7 @@ fi
+
+ # Generate the META files now.
+
+-l="$ldbm dynlink graphics $lnum str threads unix stdlib bigarray ocamldoc $llabltk $lcamlp4 $lobuild $lcomplibs $lbytes $lspacetime"
++l="$ldbm dynlink graphics $lnum str threads unix stdlib bigarray ocamldoc $lcomplibs $lbytes $lspacetime"
+
+ for dir in site-lib-src/*; do
+ # We do not really know if $dir is a directory.
diff --git a/abs/extra/ocaml-findlib/makefile.patch b/abs/extra/ocaml-findlib/makefile.patch
deleted file mode 100644
index 0e21a2d..0000000
--- a/abs/extra/ocaml-findlib/makefile.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: b/Makefile
-===================================================================
---- a/Makefile
-+++ b/Makefile
-@@ -71,7 +71,7 @@ findlib.conf: findlib.conf.in
-
- .PHONY: install-doc
- install-doc:
-- mkdir -p "$(prefix)$(OCAMLFIND_MAN)/man1" "$(prefix)$(OCAMLFIND_MAN)/man3 $(prefix)$(OCAMLFIND_MAN)/man5"
-+ mkdir -p "$(prefix)$(OCAMLFIND_MAN)/man1" "$(prefix)$(OCAMLFIND_MAN)/man3" "$(prefix)$(OCAMLFIND_MAN)/man5"
- -cp doc/ref-man/ocamlfind.1 "$(prefix)$(OCAMLFIND_MAN)/man1"
- -cp doc/ref-man/META.5 doc/ref-man/site-lib.5 doc/ref-man/findlib.conf.5 "$(prefix)$(OCAMLFIND_MAN)/man5"
-
diff --git a/abs/extra/ocaml-integers/PKGBUILD b/abs/extra/ocaml-integers/PKGBUILD
new file mode 100644
index 0000000..52f6d29
--- /dev/null
+++ b/abs/extra/ocaml-integers/PKGBUILD
@@ -0,0 +1,30 @@
+# Maintainer: Jürgen Hötzel <juergen@archlinux.org>
+
+pkgname=ocaml-integers
+pkgver=0.2.2
+pkgrel=2
+pkgdesc='Library for binding to C libraries using pure OCaml'
+arch=('i686' 'x86_64')
+url=https://github.com/ocamllabs/ocaml-integers
+license=('custom')
+options=('!strip')
+makedepends=('ocaml-topkg' 'ocaml-findlib' 'ocaml-compiler-libs' 'ocamlbuild' 'opam')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/ocamllabs/$pkgname/archive/v$pkgver.tar.gz")
+md5sums=('f966342ad19682d4d5ade1e202388a81')
+
+
+build() {
+ cd ${pkgname}-$pkgver
+ make
+}
+
+package() {
+ cd ${pkgname}-$pkgver
+
+ opam-installer --prefix="${pkgdir}/usr" \
+ --libdir="${pkgdir}$(ocamlc -where)" \
+ --docdir="${pkgdir}/usr/share/doc" \
+ --stubsdir="${pkgdir}$(ocamlc -where)/stublibs"
+
+ install -Dm644 LICENSE.md "${pkgdir}/usr/share/licenses/${pkgname}"/LICENSE.md
+}
diff --git a/abs/extra/ocaml-result/PKGBUILD b/abs/extra/ocaml-result/PKGBUILD
new file mode 100644
index 0000000..fe58323
--- /dev/null
+++ b/abs/extra/ocaml-result/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Jürgen Hötzel <juergen@archlinux.org>
+
+_pkgname=result
+pkgname=ocaml-${_pkgname}
+pkgver=1.3
+pkgrel=2
+pkgdesc="Compatibility Result module"
+arch=('i686' 'x86_64' 'armv7h')
+url="https://github.com/janestreet/result"
+license=('BSD')
+depends=('ocaml')
+makedepends=('ocaml-findlib' 'dune')
+options=('!strip')
+source=("https://github.com/janestreet/result/archive/${pkgver}.tar.gz")
+sha256sums=('47a4a7abca084ac844716b047d4b26eacbd96174034c8836f35cd400e84c8db4')
+
+build() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+ jbuilder build
+}
+
+
+package() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+
+ install -dm755 "${pkgdir}$(ocamlfind printconf destdir)"
+ jbuilder install --prefix "${pkgdir}/usr" \
+ --libdir "${pkgdir}$(ocamlfind printconf destdir)"
+
+ install -Dm644 "LICENSE.md" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.md"
+ mv "${pkgdir}/usr/doc" "${pkgdir}/usr/share/"
+}
diff --git a/abs/extra/ocaml-topkg/PKGBUILD b/abs/extra/ocaml-topkg/PKGBUILD
new file mode 100644
index 0000000..333d708
--- /dev/null
+++ b/abs/extra/ocaml-topkg/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Jürgen Hötzel <juergen@archlinux.org>
+pkgname=ocaml-topkg
+pkgver=0.9.1
+pkgrel=2
+pkgdesc="A packager for distributing OCaml software"
+arch=('x86_64')
+url="http://erratique.ch/software/topkg"
+license=('BSD')
+depends=('ocaml' 'ocaml-result')
+makedepends=('ocaml-findlib' 'ocamlbuild' 'opam' 'ocaml-compiler-libs')
+source=("http://erratique.ch/software/topkg/releases/topkg-${pkgver}.tbz")
+md5sums=('8978a0595db1a22e4251ec62735d4b84')
+
+build() {
+ cd "${srcdir}/topkg-${pkgver}"
+
+ pkg/pkg.ml build --pkg-name topkg
+}
+
+package() {
+ cd "${srcdir}/topkg-${pkgver}"
+
+ opam-installer --prefix="${pkgdir}/usr" \
+ --libdir="${pkgdir}$(ocamlc -where)" \
+ --docdir="${pkgdir}/usr/share/doc"
+ install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ mv "${pkgdir}/usr/share/doc/topkg/LICENSE.md" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.md"
+}
diff --git a/abs/extra/ocaml/PKGBUILD b/abs/extra/ocaml/PKGBUILD
index 2527a98..f6b0fa9 100644
--- a/abs/extra/ocaml/PKGBUILD
+++ b/abs/extra/ocaml/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id$
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
pkgbase='ocaml'
pkgname=('ocaml' 'ocaml-compiler-libs')
-pkgver=4.06.0
-pkgrel=2
+pkgver=4.07.1
+pkgrel=1
pkgdesc="A functional language with OO extensions"
arch=('x86_64')
license=('LGPL2.1' 'custom: QPL-1.0')
@@ -13,7 +12,7 @@ depends=('gdbm')
makedepends=('tk>=8.6.0' 'ncurses>=5.6-7' 'libx11')
optdepends=('ncurses: advanced ncurses features' 'tk: advanced tk features')
source=(http://caml.inria.fr/distrib/ocaml-${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
-sha1sums=('831fab643feb0f78bd206f0a9a09a92df58838e7')
+sha1sums=('4f6457627a034e3b58c88a5ee6cc69aebd306746')
options=('!makeflags' '!emptydirs' 'staticlibs')
build() {
diff --git a/abs/extra/ocamlbuild/PKGBUILD b/abs/extra/ocamlbuild/PKGBUILD
index 25fa398..eacd3b4 100644
--- a/abs/extra/ocamlbuild/PKGBUILD
+++ b/abs/extra/ocamlbuild/PKGBUILD
@@ -1,27 +1,26 @@
-# $Id$
# Maintainer: Jürgen Hötzel <juergen@hoetzel.info>
pkgname=ocamlbuild
-pkgver=0.9.3
-pkgrel=1
+pkgver=0.13.1
+pkgrel=2
pkgdesc='Build tool, that has built-in rules for building OCaml library and programs'
-arch=('x86_64' 'i686')
+arch=('x86_64')
license=('GPL2')
url='https://github.com/ocaml/ocamlbuild/releases'
depends=('ocaml>=4.04.0')
options=('!makeflags')
source=("https://github.com/ocaml/${pkgname}/archive/$pkgver.tar.gz")
-sha1sums=('16d15d90689b3748a2727e02e03c99a8c2d9ccc7')
+sha1sums=('092907719d184ca5ada87958eea1866e83b0fd51')
build() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd $pkgname-$pkgver
make configure
make
}
package() {
- cd "$srcdir/$pkgname-$pkgver"
- make DESTDIR="$pkgdir/" install
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/opam/PKGBUILD b/abs/extra/opam/PKGBUILD
new file mode 100644
index 0000000..0db29ee
--- /dev/null
+++ b/abs/extra/opam/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Alexander F. Rødseth <xyproto@archlinux.org>
+# Contributor: Vincent B. <vb@luminar.eu.org>
+
+pkgname=opam
+pkgver=2.0.3
+pkgrel=1
+pkgdesc='OCaml package manager'
+arch=(x86_64)
+url='https://opam.ocaml.org/'
+license=(GPL)
+depends=(bubblewrap ocaml-compiler-libs unzip)
+optdepends=('darcs: For downloading packages with darcs'
+ 'git: For downloading packages with git'
+ 'mercurial: For downloading packages with mercurial'
+ 'rsync: For downloading packages with rsync')
+source=("https://github.com/ocaml/opam/releases/download/$pkgver/opam-full-$pkgver.tar.gz")
+sha256sums=('0589da4da184584a5445d59385009536534f60bc0e27772245b2f49e5fa8f0e2')
+
+build() {
+ cd "opam-full-$pkgver"
+ ./configure --prefix=/usr
+ make lib-ext all -j1 \
+ OCAMLC='ocamlc -unsafe-string' \
+ OCAMLOPT='ocamlopt -unsafe-string'
+}
+
+package() {
+ make -C "opam-full-$pkgver" DESTDIR="$pkgdir" install
+
+ install -d "$pkgdir/usr/share/doc"
+ mv "$pkgdir/usr/doc/opam-installer" "$pkgdir/usr/share/doc/opam"
+ rmdir "$pkgdir/usr/doc"
+}
+
+# getver: opam.ocaml.org
+# vim: ts=2 sw=2 et:
diff --git a/abs/extra/openpht/PKGBUILD b/abs/extra/openpht/PKGBUILD
index 21eb1d3..36a5b72 100644
--- a/abs/extra/openpht/PKGBUILD
+++ b/abs/extra/openpht/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=openpht
pkgver=1.8.0.148
_pkghash=573b6d73
-pkgrel=3
+pkgrel=4
pkgdesc='OpenPHT is a community driven fork of Plex Home Theater'
arch=('i686' 'x86_64')
url='https://github.com/RasPlex/OpenPHT/'
diff --git a/abs/extra/plex-media-server/PKGBUILD b/abs/extra/plex-media-server/PKGBUILD
index f305dd3..8122125 100644
--- a/abs/extra/plex-media-server/PKGBUILD
+++ b/abs/extra/plex-media-server/PKGBUILD
@@ -7,8 +7,8 @@
# Contributor: Praekon <praekon@googlemail.com>
pkgname=plex-media-server
-pkgver=1.13.8.5395
-_pkgsum=10d48da0d
+pkgver=1.14.1.5488
+_pkgsum=cc260c476
pkgrel=1
pkgdesc='Plex Media Server'
arch=('x86_64')
@@ -45,4 +45,4 @@ md5sums=('dfd6778f5c0d3d64c2c3a71dca02b7cc'
'97241861f2c0b7c82d1945a6c5de8e35'
'506ec15815bba749a743780edd2323c8'
'af6d0a81c7821b2eddb1bc137310ca1b'
- 'f47d1da2bd2150bccdb283cea21d4e9a')
+ 'fafb64a6cc876478964e563af35ea1bd')
diff --git a/abs/extra/rapidjson/PKGBUILD b/abs/extra/rapidjson/PKGBUILD
new file mode 100644
index 0000000..27612a6
--- /dev/null
+++ b/abs/extra/rapidjson/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Jonathan Steel <jsteel at archlinux.org>
+# Contributor: Yunhui Fu <yhfudev@gmail.com>
+
+pkgname=rapidjson
+pkgver=1.1.0
+pkgrel=3
+pkgdesc="A fast JSON parser/generator for C++ with both SAX/DOM style API"
+arch=('any')
+url="https://github.com/miloyip/rapidjson"
+license=('MIT')
+makedepends=('gcc' 'cmake')
+source=($pkgname-$pkgver.tar.gz::https://github.com/miloyip/$pkgname/archive/v$pkgver.tar.gz)
+md5sums=('badd12c511e081fec6c89c43a7027bce')
+
+prepare() {
+ cd $pkgname-$pkgver
+ find -name CMakeLists.txt | xargs sed -e 's|-Werror||' -i # Don't use -Werror
+}
+
+build () {
+ cd $pkgname-$pkgver
+
+ mkdir -p build
+ cd build
+
+ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
+
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver/build
+
+ DESTDIR="$pkgdir" make install
+
+ install -Dm644 ../license.txt "$pkgdir"/usr/share/licenses/$pkgname/license.txt
+}
diff --git a/abs/extra/sassc/PKGBUILD b/abs/extra/sassc/PKGBUILD
new file mode 100644
index 0000000..eb1ecaf
--- /dev/null
+++ b/abs/extra/sassc/PKGBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Jerome Leclanche <jerome@leclan.ch>
+# Contributor: Isaac Dupree <antispam@idupree.com>
+
+pkgname=sassc
+pkgver=3.5.0
+pkgrel=2
+pkgdesc="C implementation of Sass CSS preprocessor."
+arch=("x86_64")
+url="http://libsass.org/"
+license=("MIT")
+depends=("libsass")
+source=("$pkgname-$pkgver.tar.gz::https://github.com/sass/$pkgname/archive/$pkgver.tar.gz")
+sha256sums=("26f54e31924b83dd706bc77df5f8f5553a84d51365f0e3c566df8de027918042")
+
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ autoreconf -i
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+ install -D -m644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/abs/extra/screen/PKGBUILD b/abs/extra/screen/PKGBUILD
index 3413734..a360b2f 100644
--- a/abs/extra/screen/PKGBUILD
+++ b/abs/extra/screen/PKGBUILD
@@ -1,48 +1,52 @@
-# $Id: PKGBUILD 147962 2012-01-29 04:41:21Z allan $
-# Maintainer: Allan McRae <allan@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
# Committer: dorphell <dorphell@gmx.net>
pkgname=screen
-pkgver=4.0.3
-pkgrel=13
-_ptygroup=5 #the UID of our PTY/TTY group
-pkgdesc="Full-screen window manager that multiplexes a physical terminal"
-arch=('i686' 'x86_64')
-url="http://www.gnu.org/software/screen/"
+pkgver=4.6.2
+pkgrel=1
+pkgdesc='Full-screen window manager that multiplexes a physical terminal'
+url='https://www.gnu.org/software/screen/'
+arch=('x86_64')
license=('GPL')
depends=('ncurses' 'pam')
+source=("https://ftp.gnu.org/gnu/screen/screen-${pkgver}.tar.gz"
+ 'tmpfiles.d'
+ 'pam.d')
+sha256sums=('1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a'
+ '1f33ce4faca7bd05dd80403411af31e682d5d23e79558e884ae5a35f1dd96223'
+ '971c25929ea97422c09e10679ab98e9e6c59295aae1a4a9970909d2206e23090')
+
backup=('etc/screenrc' 'etc/pam.d/screen')
options=('!makeflags')
-install=screen.install
-source=(ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-${pkgver}.tar.gz
- screen-4.0.3-long-term.patch
- screen-4.0.3-caption-colors.patch
- screen.pam)
-md5sums=('8506fd205028a96c741e4037de6e3c42'
- '2723c3e71d5a2e5a74b6ddbc5215ef0f'
- '191b6ced695ce2ae3a65bf02c2d4220f'
- '74f7919d7b65436cc2ea5341fa8ca374')
+
+_ptygroup=5 #the UID of our PTY/TTY group
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- patch -Np1 -i $srcdir/screen-4.0.3-long-term.patch
- patch -Np2 -i $srcdir/screen-4.0.3-caption-colors.patch
-
- ./configure --prefix=/usr --enable-pam \
- --with-sys-screenrc=/etc/screenrc --enable-colors256 \
- --enable-rxvt_osc --enable-telnet \
- --with-pty-group=$_ptygroup \
- --mandir=/usr/share/man --infodir=/usr/share/info
- make
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-colors256 \
+ --enable-pam \
+ --enable-rxvt_osc \
+ --enable-telnet \
+ --with-pty-group=$_ptygroup \
+ --with-socket-dir=/run/screens \
+ --with-sys-screenrc=/etc/screenrc \
+
+ make
}
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
- install -Dm644 ${srcdir}/screen.pam ${pkgdir}/etc/pam.d/screen
+ install -Dm644 ../pam.d "${pkgdir}"/etc/pam.d/screen
+ install -Dm644 ../tmpfiles.d "${pkgdir}"/usr/lib/tmpfiles.d/screen.conf
- install -Dm644 etc/completer.zsh ${pkgdir}/usr/share/zsh/site-functions/screen
- install -Dm644 etc/etcscreenrc ${pkgdir}/etc/screenrc
- install -Dm644 etc/screenrc ${pkgdir}/etc/skel/.screenrc
+ install -Dm644 etc/etcscreenrc "${pkgdir}"/etc/screenrc
+ install -Dm644 etc/screenrc "${pkgdir}"/etc/skel/.screenrc
}
diff --git a/abs/extra/screen/screen.pam b/abs/extra/screen/pam.d
index 07c42ad..07c42ad 100644
--- a/abs/extra/screen/screen.pam
+++ b/abs/extra/screen/pam.d
diff --git a/abs/extra/screen/screen-4.0.3-caption-colors.patch b/abs/extra/screen/screen-4.0.3-caption-colors.patch
deleted file mode 100644
index c92cb0c..0000000
--- a/abs/extra/screen/screen-4.0.3-caption-colors.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From e6a28cf8bfdac15faa6c267bf476ddcaddf48d67 Mon Sep 17 00:00:00 2001
-From: Sadrul Habib Chowdhury <sadrul@users.sourceforge.net>
-Date: Tue, 26 Jan 2010 20:17:26 +0000
-Subject: Accommodate more color changes in the caption.
-
----
-diff --git a/src/screen.c b/src/screen.c
-index b1c3dfb..2cceae0 100644
---- a/src/screen.c
-+++ b/src/screen.c
-@@ -2204,7 +2204,7 @@ static const char months[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
- #endif
-
- static char winmsg_buf[MAXSTR];
--#define MAX_WINMSG_REND 16 /* rendition changes */
-+#define MAX_WINMSG_REND 256 /* rendition changes */
- static int winmsg_rend[MAX_WINMSG_REND];
- static int winmsg_rendpos[MAX_WINMSG_REND];
- static int winmsg_numrend;
---
-cgit v0.8.3.4
diff --git a/abs/extra/screen/screen-4.0.3-long-term.patch b/abs/extra/screen/screen-4.0.3-long-term.patch
deleted file mode 100644
index 3e66acd..0000000
--- a/abs/extra/screen/screen-4.0.3-long-term.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Naur screen-4.0.3-orig//display.h screen-4.0.3/display.h
---- screen-4.0.3-orig//display.h 2003-07-02 00:01:42.000000000 +1000
-+++ screen-4.0.3/display.h 2010-12-03 20:19:23.826671689 +1000
-@@ -85,7 +85,7 @@
- struct win *d_other; /* pointer to other window */
- int d_nonblock; /* -1 don't block if obufmax reached */
- /* >0: block after nonblock secs */
-- char d_termname[20 + 1]; /* $TERM */
-+ char d_termname[40 + 1]; /* $TERM */
- char *d_tentry; /* buffer for tgetstr */
- char d_tcinited; /* termcap inited flag */
- int d_width, d_height; /* width/height of the screen */
-diff -Naur screen-4.0.3-orig//screen.h screen-4.0.3/screen.h
---- screen-4.0.3-orig//screen.h 2003-08-22 22:28:43.000000000 +1000
-+++ screen-4.0.3/screen.h 2010-12-03 20:19:43.163338333 +1000
-@@ -202,7 +202,7 @@
- char preselect[20];
- int esc; /* his new escape character unless -1 */
- int meta_esc; /* his new meta esc character unless -1 */
-- char envterm[20 + 1]; /* terminal type */
-+ char envterm[40 + 1]; /* terminal type */
- int encoding; /* encoding of display */
- }
- attach;
diff --git a/abs/extra/screen/screen.install b/abs/extra/screen/screen.install
deleted file mode 100644
index 9340e60..0000000
--- a/abs/extra/screen/screen.install
+++ /dev/null
@@ -1,21 +0,0 @@
-infodir=usr/share/info
-filelist=(screen.info screen.info-1 screen.info-2 screen.info-3 screen.info-4 screen.info-5)
-
-post_install() {
- [ -x usr/bin/install-info ] || return 0
- for file in ${filelist[@]}; do
- install-info $infodir/$file.gz $infodir/dir 2> /dev/null
- done
-}
-
-post_upgrade() {
- post_install $1
-}
-
-pre_remove() {
- [ -x usr/bin/install-info ] || return 0
- for file in ${filelist[@]}; do
- install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
- done
-}
-
diff --git a/abs/extra/screen/tmpfiles.d b/abs/extra/screen/tmpfiles.d
new file mode 100644
index 0000000..2273828
--- /dev/null
+++ b/abs/extra/screen/tmpfiles.d
@@ -0,0 +1 @@
+d /run/screens 0755 root root -
diff --git a/abs/extra/source-highlight/PKGBUILD b/abs/extra/source-highlight/PKGBUILD
index 6c1ae0c..250ab53 100644
--- a/abs/extra/source-highlight/PKGBUILD
+++ b/abs/extra/source-highlight/PKGBUILD
@@ -1,18 +1,24 @@
-# $Id$
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
pkgname=source-highlight
pkgver=3.1.8
-pkgrel=14
+pkgrel=18
pkgdesc="Convert source code to syntax highlighted document"
arch=('x86_64')
url="http://www.gnu.org/software/src-highlite/"
license=('GPL')
depends=('bash' 'boost-libs')
makedepends=('ctags' 'boost')
-source=("ftp://ftp.gnu.org/gnu/src-highlite/${pkgname}-${pkgver}.tar.gz")
-md5sums=('3243470706ef5fefdc3e43b5306a4e41')
+source=("ftp://ftp.gnu.org/gnu/src-highlite/${pkgname}-${pkgver}.tar.gz"
+ "fix-zsh-highlighting-hangups.patch")
+md5sums=('3243470706ef5fefdc3e43b5306a4e41'
+ '5b6129bca6fcd0ea252fa31bf7a988fa')
+
+prepare() {
+ cd ${pkgname}-${pkgver}
+ patch -Np1 -i "${srcdir}/fix-zsh-highlighting-hangups.patch"
+}
build() {
cd ${pkgname}-${pkgver}
diff --git a/abs/extra/source-highlight/fix-zsh-highlighting-hangups.patch b/abs/extra/source-highlight/fix-zsh-highlighting-hangups.patch
new file mode 100644
index 0000000..200c9f8
--- /dev/null
+++ b/abs/extra/source-highlight/fix-zsh-highlighting-hangups.patch
@@ -0,0 +1,13 @@
+diff --git a/src/zsh.lang b/src/zsh.lang
+index 69542a7..a0bac36 100644
+--- a/src/zsh.lang
++++ b/src/zsh.lang
+@@ -35,7 +35,7 @@ keyword = "alias|always|autoload|bg|bindkey|break|builtin",
+ "unlimit|unset|unsetopt|until|vared|wait|whence",
+ "where|which|while|zcompile|zformat|zftp|zle",
+ "zmodload|zparseopts|zprof|zpty|zregexparse",
+- "zsocket|zstyle|ztcp|"
++ "zsocket|zstyle|ztcp"
+
+ variable = '\$\{([^[:blank:]]+)\}'
+ variable = '\$\(([^[:blank:]]+)\)'
diff --git a/abs/extra/ttf-google-fonts-git/PKGBUILD b/abs/extra/ttf-google-fonts-git/PKGBUILD
deleted file mode 100644
index a4e60a2..0000000
--- a/abs/extra/ttf-google-fonts-git/PKGBUILD
+++ /dev/null
@@ -1,72 +0,0 @@
-# Maintainer: Sebastian Stammler <stammler.s@gmail.com>
-#
-# Now pacman 4.1 ready!
-# For improvements/fixes to this package, please send me a
-# pull request on github: https://github.com/sebastianst/aur-packages
-#
-# Contributor: Sarkasper <echo a2FzcGVyLm1lbnRlbkBnbXguY29tCg== | base64 -d>
-# Contributor: Daniel Micay <danielmicay@gmail.com>
-# Contributor: Michalis Georgiou <mechmg93@gmail.comr>
-# Contributor: Alexander De Sousa <archaur.xandy21@spamgourmet.com>
-
-pkgname=ttf-google-fonts-git
-pkgver=20130818
-pkgrel=1
-pkgdesc="Google Fonts catalogue."
-arch=('any')
-url="https://github.com/w0ng/googlefontdirectory"
-license=('various')
-depends=('fontconfig' 'xorg-fonts-encodings')
-makedepends=(git)
-conflicts=('googlefontdirectory'
- 'jsmath-fonts'
- 'lohit-fonts'
- 'oldstand-font'
- 'otf-goudy'
- 'ttf-andika'
- 'ttf-anonymous-pro'
- 'ttf-cantarell'
- 'ttf-cardo'
- 'ttf-chromeos-fonts'
- 'ttf-droid'
- 'ttf-google-webfonts-hg'
- 'ttf-inconsolata'
- 'ttf-kimberly_geswein_print'
- 'ttf-nova'
- 'ttf-oldstandard'
- 'ttf-pt-mono'
- 'ttf-pt-sans'
- 'ttf-ptsans'
- 'ttf-roboto'
- 'ttf-sil-fonts'
- 'ttf-sortsmillgoudy'
- 'ttf-source-code-pro'
- 'ttf-source-sans-pro'
- 'ttf-ubuntu-font-family'
- 'ttf-vollkorn'
- 'ttf-google-webfonts'
- 'ttf-oxygen'
- 'ttf-opensans'
- 'ttf-medievalsharp'
- 'ttf-google-webfonts-git'
- 'cantarell-fonts'
- 'ttf-comfortaa')
-provides=("${conflicts[@]}")
-source=("git://github.com/w0ng/googlefontdirectory.git")
-md5sums=('SKIP')
-install=font.install
-
-# git variables
-_gitname="googlefontdirectory"
-
-pkgver() {
- cd "$srcdir/$_gitname"
- git log -1 --format="%cd" --date=short | sed 's|-||g'
-}
-
-package() {
- cd "$srcdir"
- install -dm755 "$pkgdir/usr/share/fonts/TTF"
- find . -type f -name \*.ttf -exec install -Dm644 '{}' \
- "$pkgdir/usr/share/fonts/TTF" \;
-}
diff --git a/abs/extra/ttf-google-fonts-git/font.install b/abs/extra/ttf-google-fonts-git/font.install
deleted file mode 100644
index faf717e..0000000
--- a/abs/extra/ttf-google-fonts-git/font.install
+++ /dev/null
@@ -1,15 +0,0 @@
-post_install() {
- echo -n "Updating font cache... "
- fc-cache -fs > /dev/null
- mkfontscale /usr/share/fonts/TTF
- mkfontdir /usr/share/fonts/TTF
- echo "done"
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install $1
-} \ No newline at end of file
diff --git a/abs/extra/wayland-protocols/PKGBUILD b/abs/extra/wayland-protocols/PKGBUILD
index 88b7dd1..2c721cc 100644
--- a/abs/extra/wayland-protocols/PKGBUILD
+++ b/abs/extra/wayland-protocols/PKGBUILD
@@ -1,8 +1,7 @@
-# $Id$
# Maintainer: Sébastien Luttringer <seblu@seblu.net>
pkgname=wayland-protocols
-pkgver=1.12
+pkgver=1.17
pkgrel=1
pkgdesc='Specifications of extended Wayland protocols'
arch=('any')
@@ -12,9 +11,13 @@ makedepends=('wayland')
validpgpkeys=('8307C0A224BABDA1BABD0EB9A6EEEC9E0136164A' # Jonas Ådahl
'A66D805F7C9329B4C5D82767CCC4F07FAC641EFF') # Daniel Stone
source=("https://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"{,.sig})
-sha1sums=('ac908e91c6c5e7802c0af48f55725ad683017e72'
+sha1sums=('7d2569c838c776545e3eb1b1049b9c37178aae24'
'SKIP')
+prepare() {
+ cd $pkgname-$pkgver
+}
+
build() {
cd $pkgname-$pkgver
@@ -22,11 +25,17 @@ build() {
make
}
+check() {
+ cd $pkgname-$pkgver
+
+ make check
+}
+
package() {
cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
- install -Dm 644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m 644 COPYING
}
# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/wayland/PKGBUILD b/abs/extra/wayland/PKGBUILD
index 48713fd..b5a7bcf 100644
--- a/abs/extra/wayland/PKGBUILD
+++ b/abs/extra/wayland/PKGBUILD
@@ -1,35 +1,62 @@
-# $Id$
# Maintainer: Tom Gundersen <teg@jklm.no>
# Maintainer: Sébastien Luttringer <seblu@archlinux.org>
# Contributor: Joel Teichroeb <joel@teichroeb.net>
-pkgname=wayland
-pkgver=1.14.0
+pkgbase=wayland
+pkgname=(wayland wayland-docs)
+pkgver=1.16.0
pkgrel=1
pkgdesc='A computer display server protocol'
arch=('x86_64')
url='https://wayland.freedesktop.org/'
license=('MIT')
depends=('glibc' 'libffi' 'expat' 'libxml2')
-validpgpkeys=('C7223EBE4EF66513B892598911A30156E0E67611') # Bryce Harrington
-source=("https://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"{,.sig})
-sha1sums=('53a443be3bafe73209bbc49ef2cb134ed16e0141'
+makedepends=('libxslt' 'doxygen' 'xmlto' 'graphviz' 'docbook-xsl')
+validpgpkeys=('C7223EBE4EF66513B892598911A30156E0E67611' # Bryce Harrington
+ 'C0066D7DB8E9AC6844D728715E54498E697F11D7') # Derek Foreman
+source=("https://wayland.freedesktop.org/releases/$pkgbase-$pkgver.tar.xz"{,.sig})
+sha1sums=('24c63a5045c653dcfa24efd10fa7c7de89aca9ef'
'SKIP')
+prepare() {
+ cd $pkgbase-$pkgver
+}
+
build() {
- cd $pkgname-$pkgver
+ cd $pkgbase-$pkgver
./configure \
--prefix=/usr \
- --disable-documentation \
--disable-static
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
make
}
-package() {
- cd $pkgname-$pkgver
+check() {
+ cd $pkgbase-$pkgver
+
+ make check
+}
+
+package_wayland() {
+ cd $pkgbase-$pkgver
make DESTDIR="$pkgdir" install
+
+ mkdir -p "$srcdir/docs/share"
+ mv "$pkgdir"/usr/share/{doc,man} "$srcdir/docs/share"
+
+ install -Dm 644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
+
+package_wayland-docs() {
+ pkgdesc+=" (documentation)"
+ depends=()
+
+ cd $pkgbase-$pkgver
+
+ mv "$srcdir/docs" "$pkgdir/usr"
+
install -Dm 644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
}
diff --git a/abs/extra/yelp-tools/PKGBUILD b/abs/extra/yelp-tools/PKGBUILD
index a5fba2f..c8859ed 100644
--- a/abs/extra/yelp-tools/PKGBUILD
+++ b/abs/extra/yelp-tools/PKGBUILD
@@ -1,26 +1,35 @@
-# $Id$
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=yelp-tools
-pkgver=3.18.0
+pkgver=3.28.0
pkgrel=1
-pkgdesc="Tools for creating Yelp documentation"
-arch=('any')
-depends=('yelp-xsl' 'libxslt' 'libxml2' 'itstool')
-license=('GPL')
-options=('!emptydirs')
-url="http://www.gnome.org"
-source=(https://download.gnome.org/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz)
-sha256sums=('c6c1d65f802397267cdc47aafd5398c4b60766e0a7ad2190426af6c0d0716932')
+pkgdesc="Collection of tools for building and converting documentation"
+url="https://gitlab.gnome.org/GNOME/yelp-tools"
+arch=(any)
+depends=(yelp-xsl libxslt libxml2 itstool docbook-xsl)
+makedepends=(git)
+license=(GPL)
+_commit=54a1bd6142d367b18a36d1ba96705840042747be # tags/3.28.0^0
+source=("git+https://gitlab.gnome.org/GNOME/yelp-tools.git#commit=$_commit")
+sha256sums=('SKIP')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-/+/g'
+}
+prepare() {
+ cd $pkgname
+ NOCONFIGURE=1 ./autogen.sh
+}
build() {
- cd $pkgname-$pkgver
+ cd $pkgname
./configure --prefix=/usr
make
}
package() {
- cd $pkgname-$pkgver
+ cd $pkgname
make DESTDIR="$pkgdir" install
}